You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:05:28