最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、背景

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

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

二、準備工作

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批量上傳文件信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python使用列表的最佳方案

    python使用列表的最佳方案

    這篇文章主要介紹了python使用列表的最佳方式,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-08-08
  • python調(diào)用ffmpeg命令行工具便捷操作視頻示例實現(xiàn)過程

    python調(diào)用ffmpeg命令行工具便捷操作視頻示例實現(xiàn)過程

    現(xiàn)在短視頻很流行,有很多視頻編輯軟件,功能豐富,而我們需要的只是裁剪功能,而且需要用編程的方式調(diào)用,那么最合適的莫過于ffmpeg了
    2021-11-11
  • Python中字典(dict)合并的四種方法總結

    Python中字典(dict)合并的四種方法總結

    在Python中將字典(dict)進行合并操作,是一個比較常見的問題。下面這篇文章主要給大家總結介紹了關于Python中字典(dict)合并的四種方法,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-08-08
  • tensorflow 用矩陣運算替換for循環(huán) 用tf.tile而不寫for的方法

    tensorflow 用矩陣運算替換for循環(huán) 用tf.tile而不寫for的方法

    今天小編就為大家分享一篇tensorflow 用矩陣運算替換for循環(huán) 用tf.tile而不寫for的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 兒童編程python入門

    兒童編程python入門

    很多家長都想讓孩子學習編程,今天我們給大家分享一下關于兒童python的入門以及簡單的代碼,有興趣的朋友閱讀下吧。
    2018-05-05
  • 利用Python實現(xiàn)二次方程求根的深度指南

    利用Python實現(xiàn)二次方程求根的深度指南

    在數(shù)學計算、工程建模、物理分析等場景中,二次方程求根是基礎且核心的需求,本文主要為大家詳細介紹了如何使用Python實現(xiàn)二次方程求根,感興趣的可以了解下
    2025-08-08
  • python批量處理多DNS多域名的nslookup解析實現(xiàn)

    python批量處理多DNS多域名的nslookup解析實現(xiàn)

    這篇文章主要介紹了python批量處理多DNS多域名的nslookup解析實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Python實現(xiàn)Gif圖片分解的示例代碼

    Python實現(xiàn)Gif圖片分解的示例代碼

    這篇文章主要為大家詳細介紹了如何利用Python語言實現(xiàn)Gif圖片分解功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起動手嘗試一下
    2022-08-08
  • Python多進程方式抓取基金網(wǎng)站內(nèi)容的方法分析

    Python多進程方式抓取基金網(wǎng)站內(nèi)容的方法分析

    這篇文章主要介紹了Python多進程方式抓取基金網(wǎng)站內(nèi)容的方法,結合實例形式分析了Python多進程抓取網(wǎng)站內(nèi)容相關實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下
    2019-06-06
  • 查看django版本的方法分享

    查看django版本的方法分享

    今天小編就為大家分享一篇查看django版本的方法分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論

商洛市| 伊通| 冷水江市| 石柱| 广平县| 宜黄县| 深泽县| 德令哈市| 连州市| 太白县| 孟州市| 昌邑市| 东兴市| 沂南县| 昭苏县| 武强县| 德江县| 郁南县| 紫金县| 华亭县| 芦溪县| 江山市| 华亭县| 迭部县| 云林县| 玉林市| 张家界市| 那曲县| 长汀县| 中超| 黄大仙区| 平遥县| 灵寿县| 龙山县| 阳谷县| 彩票| 旬阳县| 大连市| 耿马| 循化| 微山县|