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】 参数
惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。
一代天骄,成吉思汗,只识弯弓射大雕。
俱往矣,数风流人物,还看今朝