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

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

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

一、背景

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

簡(jiǎn)而言之就是需要通過(guò)接口上傳一批文件信息到服務(wù)器

二、準(zhǔn)備工作

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

2.requests第三方庫(kù):用于向服務(wù)器發(fā)送請(qǐng)求,未安裝的同學(xué)移步控制臺(tái)輸入以下命令

pip install requests

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

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

5.上傳接口:從接口文檔查看接口地址、傳參、響應(yīng)等,沒(méi)有接口文檔的情況請(qǐng)同學(xué)們另辟蹊徑

三、編寫腳本

獲取文件名和類型

源文件夾是這樣的:

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

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

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

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

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)

運(yùn)行結(jié)果:

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

拼接文件信息

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

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

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

# 拼接文件信息
file_url_head = 'https://your_file_head_url/'  # 云存儲(chǔ)地址
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']),  # 隨機(jī)狀態(tài)參數(shù)
        "file_url": file_url_head + file_list[i]  # 拼接文件url
    }
    file_msg_li.append(file_msg)
pprint(file_msg_li)

運(yùn)行結(jié)果:

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

文件信息批量上傳

使用requests.post方法請(qǐng)求接口即可

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

運(yùn)行結(jié)果:

下面是控制臺(tái)打印的接口請(qǐng)求返回結(jié)果:

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

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

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

四、優(yōu)化

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

2.使用列表推導(dǎo)式簡(jiǎn)化代碼

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

4添加接口響應(yīng)異常情況處理

優(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ù)文件類型獲取對(duì)應(yīng)的參數(shù)值,若不存在則返回0
        "name": v,
        "status": random.choice(['true', 'false']),  # 隨機(jī)狀態(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/'  # 云存儲(chǔ)地址
    host = "http://your_server_url"
    file_msg_to_server(path, url_head, host)

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

相關(guān)文章

最新評(píng)論