如何使用Python的requests库正确推送CSV文件至接口?
如何用Python将CSV文件推送至指定接口
首先确保你已经安装了requests库:
pip install requests
根据接口的接收格式,有两种主流实现方式:
1. 接口接受multipart/form-data格式(文件上传场景)
这是最常见的文件推送方式,适合大多数需要上传文件的接口:
import requests # 用二进制模式打开CSV文件,避免编码问题 with open("foo.csv", 'rb') as f: endpoint = 'some-url' # 根据接口要求配置请求头,比如认证信息 headers = { # 示例:Bearer Token认证 # 'Authorization': 'Bearer your-access-token' } # 构造文件参数,key需与接口要求的字段名一致(比如接口文档指定用'csv_file'就改成对应值) files = {'file': ('foo.csv', f, 'text/csv')} # 发送POST请求 r = requests.post(endpoint, files=files, headers=headers) # 处理响应结果 if r.status_code == 200: # 若接口返回JSON格式响应 print("文件推送成功:", r.json()) else: print(f"请求失败,状态码:{r.status_code},响应详情:{r.text}")
2. 接口接受raw CSV文本作为请求体
如果接口要求直接接收CSV内容而非文件对象,用这种方式:
import requests # 读取CSV文本内容,指定正确编码(比如utf-8、gbk) with open("foo.csv", 'r', encoding='utf-8') as f: csv_content = f.read() endpoint = 'some-url' # 必须设置Content-Type为text/csv headers = { 'Content-Type': 'text/csv', # 按需添加认证等其他请求头 } # 直接将CSV内容作为请求体发送 r = requests.post(endpoint, data=csv_content, headers=headers) # 响应处理逻辑同上 if r.status_code == 200: print("CSV内容推送成功") else: print(f"请求失败:{r.status_code} - {r.text}")
后续必要补充步骤
- 确认接口规范:先查阅接口文档,明确要求的请求格式(multipart还是raw)、文件字段名、认证方式
- 完善请求头:根据接口要求添加认证信息(Token/API Key)、自定义头字段,避免因权限或格式问题请求失败
- 添加异常处理:捕获网络异常与请求错误,提升代码健壮性:
try: r = requests.post(endpoint, files=files, headers=headers, timeout=10) r.raise_for_status() # 自动抛出HTTP错误(4xx/5xx状态码) except requests.exceptions.RequestException as e: print(f"请求出错:{str(e)}") - 编码校验:确认CSV文件的编码格式,读取时指定对应编码,避免内容乱码
- 测试验证:先用Postman等工具手动测试接口连通性与文件上传逻辑,再用代码复现,排查问题更高效
内容的提问来源于stack exchange,提问作者OctaveParango
相关产品推荐
相关产品推荐

