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

使用Python通过Mockaroo API上传CSV数据集格式异常问题

问题:Mockaroo API上传CSV后内容包含Multipart边界信息,格式异常

我尝试用Python通过Mockaroo API上传CSV数据集,要求如下:

  • 上传文件格式为CSV
  • 上传后数据集需能用于Mockaroo schemas

目前请求返回200状态码,但上传后的文件内容异常,包含了Multipart的边界和头信息,而非纯CSV数据。

我的代码:

import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
import uuid

mockaroo_api_key = "XXXXXXXXXX"
url = "https://api.mockaroo.com/api/datasets/customer"

csv_data = '''\"customer_id\", \"customer_name\"
\"84a635ad-9518-4282-ad0f-3557f5d85f03\" ,\"A\"
\"022096c3-8d09-4a33-a088-14ec8cac5459\" ,\"B\"
\"06eccb26-72ad-4790-8818-cfa2f2ee1cf2\" ,\"C\"
\"08d2b709-a86b-49ca-9618-03f1451991bf\" ,\"D\"
\"64f6d8ae-ac64-466e-ad42-bac62c93b61e\" ,\"E\"
\"9234c861-e8aa-40b9-8e81-13437a22fdeb\" ,\"F\"
\"43114a05-2934-4bb2-a5c9-6baceb9a450e\" ,\"G\"
\"1e40c936-3292-4b99-80d7-98f182def365\" ,\"H\"
\"e3dafab3-6608-47b1-a67e-b0fbdcdb9c0b\" ,\"I\"
\"305fa1c5-f082-40b8-8dbc-82b0322fe0b5\" ,\"J\"
'''

boundary = uuid.uuid4().hex
m = MultipartEncoder(fields={'body': ('customer.csv', csv_data, 'text/csv')}, boundary=boundary)
headers = {'Content-Type': m.content_type}

params = {'key': mockaroo_api_key, 'filename': 'customer.csv'}
response = requests.post(url, params=params, headers=headers, data=m)

print(response.status_code)
print(response.text)

Mockaroo上显示的异常文件内容:

--72d8375e507a4716a4db93a5a72ad088
Content-Disposition: form-data; name=\"body\"; filename=\"customer.csv\"
Content-Type: text/csv

\"customer_id\"
\"84a635ad-9518-4282-ad0f-3557f5d85f03\"
\"022096c3-8d09-4a33-a088-14ec8cac5459\"
\"06eccb26-72ad-4790-8818-cfa2f2ee1cf2\"
\"08d2b709-a86b-49ca-9618-03f1451991bf\"
\"64f6d8ae-ac64-466e-ad42-bac62c93b61e\"
\"9234c861-e8aa-40b9-8e81-13437a22fdeb\"
\"43114a05-2934-4bb2-a5c9-6baceb9a450e\"
\"1e40c936-3292-4b99-80d7-98f182def365\"
\"e3dafab3-6608-47b1-a67e-b0fbdcdb9c0b\"
\"305fa1c5-f082-40b8-8dbc-82b0322fe0b5\"

--72d8375e507a4716a4db93a5a72ad088--
解决方案

问题出在你错误使用了Multipart格式上传数据,Mockaroo的数据集API接受纯CSV内容作为请求体,不需要封装成Multipart表单。修正后的代码如下:

import requests

mockaroo_api_key = "XXXXXXXXXX"
url = "https://api.mockaroo.com/api/datasets/customer"

csv_data = '''"customer_id","customer_name"
"84a635ad-9518-4282-ad0f-3557f5d85f03","A"
"022096c3-8d09-4a33-a088-14ec8cac5459","B"
"06eccb26-72ad-4790-8818-cfa2f2ee1cf2","C"
"08d2b709-a86b-49ca-9618-03f1451991bf","D"
"64f6d8ae-ac64-466e-ad42-bac62c93b61e","E"
"9234c861-e8aa-40b9-8e81-13437a22fdeb","F"
"43114a05-2934-4bb2-a5c9-6baceb9a450e","G"
"1e40c936-3292-4b99-80d7-98f182def365","H"
"e3dafab3-6608-47b1-a67e-b0fbdcdb9c0b","I"
"305fa1c5-f082-40b8-8dbc-82b0322fe0b5","J"
'''

headers = {'Content-Type': 'text/csv'}
params = {'key': mockaroo_api_key, 'filename': 'customer.csv'}

response = requests.post(url, params=params, headers=headers, data=csv_data)

print(response.status_code)
print(response.text)

关键修正点:

  1. 移除MultipartEncoder和uuid相关代码,直接将CSV字符串作为请求体发送。
  2. 设置正确的Content-Type: text/csv请求头,告知API请求内容格式。
  3. 移除CSV内容中逗号后的空格(可选,符合标准CSV格式,避免潜在解析问题)。

上传后,Mockaroo上的数据集将显示纯CSV内容,可正常用于schemas配置。

内容的提问来源于stack exchange,提问作者dazed_and_confused

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:52:28