咨询如何将CURL命令转换为Python requests POST请求
把CURL POST请求转换成Python requests代码的解决方案
我来帮你把给定的CURL命令转换成requests库的代码,同时也适配你提到的用URL替代本地图片的临时方案:
1. 对应原CURL的本地图片上传版本
原CURL命令的核心是通过multipart/form-data上传本地图片,同时携带URL查询参数和请求头。用requests实现的代码如下:
import requests # 基础API地址 url = "https://api/recognize" # 将URL中的secret_key作为查询参数传递 params = { "secret_key": "abc" } # 构造文件上传参数,对应CURL里的-F选项 # 格式为:字段名: (文件名, 文件对象, MIME类型) with open("/path/to/image.jpg", "rb") as img_file: files = { "image": ("image.jpg", img_file, "image/jpeg") } # 请求头中的accept可按需添加,Content-Type会由requests自动处理multipart/form-data headers = { "accept": "application/json" } # 发送POST请求 response = requests.post(url, params=params, files=files, headers=headers) # 解析响应结果(假设接口返回JSON格式) print(response.json())
小提示:
- 用
with语句打开文件能自动关闭资源,避免文件句柄泄漏; - 若省略
headers里的Content-Type,requests会在发送files参数时自动生成正确的multipart/form-data头,无需手动指定。
2. 用URL替代本地图片的临时方案
如果API支持直接接收图片URL作为参数(需确认API文档的字段要求,比如是否仍使用image字段),可以改成传递表单数据:
import requests url = "https://api/recognize" params = { "secret_key": "abc" } # 用data传递字符串参数,而非files data = { "image": "https://your-image-host.com/your-target-image.jpg" } headers = { "accept": "application/json", "Content-Type": "application/x-www-form-urlencoded" } response = requests.post(url, params=params, data=data, headers=headers) print(response.json())
注意:
- 部分API可能要求URL参数使用特定字段名(比如
image_url),如果当前代码返回错误,记得核对API文档的参数命名; - 若API仍要求用
multipart/form-data格式传递URL,也可以把data换成files,但这种场景下用data更高效。
内容的提问来源于stack exchange,提问作者user9578896
相关产品推荐
相关产品推荐

