欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python批量上傳文件信息到服務器的實現(xiàn)示例

 更新時間:2023年12月29日 15:47:40   作者:wx65602fa627551  
在進行軟件測試的過程中,經(jīng)常會需要準備一批數(shù)據(jù),本文主要介紹了Python批量上傳文件信息到服務器的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下

一、背景

在進行軟件測試的過程中,經(jīng)常會需要準備一批數(shù)據(jù),這不,今天就遇到了:后端開發(fā)好了文件信息上傳接口,可是前端并未開發(fā)出相關界面,而其他同學正在調試其他接口,需要用到文件信息,那么這個時候就需要我上場了

簡而言之就是需要通過接口上傳一批文件信息到服務器

二、準備工作

1.Python環(huán)境:家中常備,這個就不多說了

2.requests第三方庫:用于向服務器發(fā)送請求,未安裝的同學移步控制臺輸入以下命令

pip install requests

3.源文件:將不同類型的文件(excel、word、pdf)放到一個文件夾下

4.文件云存儲地址:文件已經(jīng)批量上傳到了云服務器,文件云存儲地址示例:https://your_file_head_url/file_name.pdf

5.上傳接口:從接口文檔查看接口地址、傳參、響應等,沒有接口文檔的情況請同學們另辟蹊徑

三、編寫腳本

獲取文件名和類型

源文件夾是這樣的:

Python實戰(zhàn):批量上傳文件信息到服務器_Python

源文件名稱是正常的,不包含“.”

源文件后綴也是正常的,與文件類型匹配

這里簡單快速處理,使用split方法通過“.”將文件分割出名稱和文件類型

dir_path = 'C:\\Users\\Administrator\\Desktop\\test_file'

# 獲取文件名和類型
file_list = os.listdir(dir_path)  # 文件列表
file_name_list = []  # 定義文件名列表
file_type_list = []  # 定義文件類型列表
for i in file_list:
    file_name = i.split('.')[0]  # 文件名
    file_type = i.split('.')[-1]  # 文件類型
    file_name_list.append(file_name)
    file_type_list.append(file_type)
print(file_name_list)
print(file_type_list)

運行結果:

Python實戰(zhàn):批量上傳文件信息到服務器_測試數(shù)據(jù)_02

拼接文件信息

根據(jù)接口文檔,上傳的文件信息需要包含類型、名稱、狀態(tài)、url四個參數(shù),這就需要對每個文件信息進行拼接

這里使用了enumerate函數(shù)來遍歷文件名列表,可以枚舉出列表的下標和值,灰常好用

注意:文件類型存在大寫字母的情況(PDF,DOC等),所以使用lower函數(shù)將文件名轉換為小寫后再判斷對應的參數(shù)值

# 拼接文件信息
file_url_head = 'https://your_file_head_url/'  # 云存儲地址
type_para_list = [1, 2, 3]  # 文件類型列表:1--excel, 2--word, 3--pdf
file_msg_li = []  # 文件信息列表
for i, v in enumerate(file_name_list):  # 遍歷文件名列表
    if file_type_list[i].lower() in ['xlsx', 'xls']:
        type_para = 1
    elif file_type_list[i].lower() in ['docx', 'doc']:
        type_para = 2
    elif file_type_list[i].lower() == 'pdf':
        type_para = 3
    else:
        type_para = 0
    file_msg = {
        "file_type": type_para,
        "name": v,
        "status": random.choice(['true', 'false']),  # 隨機狀態(tài)參數(shù)
        "file_url": file_url_head + file_list[i]  # 拼接文件url
    }
    file_msg_li.append(file_msg)
pprint(file_msg_li)

運行結果:

Python實戰(zhàn):批量上傳文件信息到服務器_測試數(shù)據(jù)_03

文件信息批量上傳

使用requests.post方法請求接口即可

# 文件信息批量上傳
for i in file_msg_li:
    res = requests.post(url=server_url, json=i)
    print(res.json())

運行結果:

下面是控制臺打印的接口請求返回結果:

Python實戰(zhàn):批量上傳文件信息到服務器_測試數(shù)據(jù)_04

下圖是數(shù)據(jù)庫的查詢結果:

Python實戰(zhàn):批量上傳文件信息到服務器_批量上傳_05

四、優(yōu)化

1.寫到一個方法中,傳入文件路徑和地址等參數(shù)

2.使用列表推導式簡化代碼

3.文件類型列表改為字典,根據(jù)類型快速查找對應的參數(shù)

4添加接口響應異常情況處理

優(yōu)化后完整代碼:

import os
import random

import requests


def file_msg_to_server(dir_path, file_url_head, server_url):
    # 獲取文件名和類型
    file_list = os.listdir(dir_path)
    file_name_list = [i.split('.')[0] for i in file_list]
    file_type_list = [i.split('.')[-1] for i in file_list]

    # 拼接文件信息
    type_para_dict = {'xlsx': 1, 'xls': 1, 'docx': 2, 'doc': 2, 'pdf': 3}  # 文件類型字典:1--excel, 2--word, 3--pdf
    file_msg_li = [{
        "file_type": type_para_dict.get(file_type_list[i].lower(), 0),  # 根據(jù)文件類型獲取對應的參數(shù)值,若不存在則返回0
        "name": v,
        "status": random.choice(['true', 'false']),  # 隨機狀態(tài)參數(shù)
        "file_url": file_url_head + file_list[i]  # 拼接文件url
    } for i, v in enumerate(file_name_list)]

    # 文件信息批量上傳
    for i in file_msg_li:
        try:
            res = requests.post(url=server_url, json=i)
            res.raise_for_status()
            return res.json()
        except requests.exceptions.HTTPError as err:
            return err
        except requests.exceptions.Timeout as err:
            return err


if __name__ == "__main__":
    path = 'C:\\Users\\Administrator\\Desktop\\test_file'
    url_head = 'https://your_file_head_url/'  # 云存儲地址
    host = "http://your_server_url"
    file_msg_to_server(path, url_head, host)

到此這篇關于Python批量上傳文件信息到服務器的實現(xiàn)示例的文章就介紹到這了,更多相關Python批量上傳文件信息內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論