Python 3.x 无法使用python请求上载二进制数据

Python 3.x 无法使用python请求上载二进制数据,python-3.x,curl,python-requests,Python 3.x,Curl,Python Requests,我正在尝试将以下curl命令转换为python请求API调用: curl --header "Content-Type: application/octet-stream" --request PUT --data-binary @content.tar.gz <upload_url> curl--header“Content-Type:application/octet-stream”--请求PUT--data-binary@Content.tar.gz 我

我正在尝试将以下curl命令转换为python请求API调用:

curl --header "Content-Type: application/octet-stream" --request PUT --data-binary @content.tar.gz <upload_url>
curl--header“Content-Type:application/octet-stream”--请求PUT--data-binary@Content.tar.gz
我已经做到了:

import requests

data = open("content.tar.gz", "rb").read()

response = requests.put(
    <upload_url>,
    headers={"Content-Type": "application/octet-stream"},
    data=data
)
导入请求
data=open(“content.tar.gz”,“rb”).read()
response=requests.put(
,
头文件={“内容类型”:“应用程序/八位字节流”},
数据=数据
)
尽管上面调用的状态代码是200,但是当curl命令工作正常时,
content.tar.gz
文件似乎无法上传

我已经研究了许多关于将curl命令转换为python请求的不同问题,但是没有发现为什么当curl命令转换为python请求时,这种转换不起作用


希望你能给我一些关于我做错了什么的建议。

你试图上传的文件有多大?1.5 K大小一点也不大。我想如果文件太大,也许你需要这样的东西:也许你可以用verbose选项检查
curl
,看看到底发生了什么,因为
curl
在幕后处理一些HTTP复杂性。若您可以访问服务器端的日志,那个么检查它们可能会有所帮助。否则,您的代码看起来正常。我对这个支持PUT的simplehttpserver进行了尝试:它成功了。