1. 程式人生 > 其它 >python 呼叫web介面匯入表格檔案

python 呼叫web介面匯入表格檔案

應用場景

需要進行表格匯入到系統中時

從web介面呼叫時,獲取請求頭資訊

注意,這裡需要將 Content-Type: multipart/form-data; 進行去除,不然會報錯
拿到from_data的引數資訊 後面再程式裡進行填參處理

實現程式碼

# -*- ecoding: utf-8 -*-
# @ModuleName: test001
# @Function: 
# @Author: darling
# @Time: 2022-03-31 15:52

import os
import sys
import time

import requests
from loguru import logger


def read_headers(file_name):
    if not exists_file(file_name):
        exit_sys(file_name + ' 檔案不存在,請在當前目錄檢查必要檔案')
    headers = {}
    with open(file_name, 'r', encoding='UTF-8') as file:
        lines = file.readlines()
        for line in lines:
            if line == '\n':
                continue
            header = {}
            # 這裡用的是[: ]進行拆分,因為value中也會存在冒號
            ll = line.split(': ')
            key = ll[0].strip()
            val = ll[1].strip().replace('\n', '')
            header[key] = val
            headers.update(header)
    return headers


def exit_sys(msg):
    logger.info(msg)
    logger.info('程式退出··· ···')
    time.sleep(3)
    sys.exit()


def exists_file(file_name):
    return os.path.exists(file_name)


def post_file():
    url = '匯入檔案的url介面'
    # 要上傳的檔案
    files = {'uploadedfile': open(r'C:\Users\Administrator\Desktop\收貨頁面EXCEL批量匯入模板20220225.xlsx', 'rb'),
             'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
             'type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
             'uploadType': 'html5',
             'name': '收貨頁面EXCEL批量匯入模板20220225.xlsx',
             'index': 0
             }  # 顯式的設定檔名
    headers = read_headers('./header.txt')

    r = requests.post(url, files=files, headers=headers)
    logger.info(r.text)


if __name__ == "__main__":
    post_file()

header.txt 裡面就是 介面請求的頭資訊,直接從開發頁面進行復制貼上即可

注意, 去掉請求頭裡的 【Content-Type: multipart/form-data】 引數