如何使用Python将文件发布到服务器,以模仿此R代码的行为?

如何使用Python将文件发布到服务器,以模仿此R代码的行为?,python,python-requests,Python,Python Requests,我能够使用R中的httr包成功地将一些csv数据发布到外部服务器,使用如下POST请求: request <- POST(url, body = upload_file('my_table.csv'), verbose()) 我试图用Python请求模块模拟这段代码(因为包的其余部分是用Python编写的),我使用以下代码: response = requests.post(url, files = {'file': open('my_table.csv','rb')}) 但是,当我这

我能够使用R中的
httr
包成功地将一些csv数据发布到外部服务器,使用如下POST请求:

request <- POST(url, body = upload_file('my_table.csv'), verbose())
我试图用Python请求模块模拟这段代码(因为包的其余部分是用Python编写的),我使用以下代码:

response = requests.post(url, files = {'file': open('my_table.csv','rb')})
但是,当我这样做时,我从服务器收到一个
错误,错误:文件类型不受支持。在Python中查看POST请求的详细信息时,我会看到以下标题:

{'User-Agent': 'python-requests/2.25.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '226', 'Content-Type': 'multipart/form-data; boundary=b8f99a72145547743d035be5d9c1e983'}

我上传和发布此CSV数据的最干净方式是什么,以便服务器可以接受它?

在您的R脚本中,将URL指向您的django应用程序,以捕获发送的内容和发送方式对不起,我没有django应用程序。如果这是您的假设(如果不是,请更正),我无法控制我要发布到的服务器。可能服务器希望设置内容类型?尝试
response=requests.post(url,files={'file':('my_table.csv',open('my_table.csv','rb'),'text/csv'))
。很难说我们不知道服务器的实际期望是什么。谢谢@MrFlick。我试过了,也得到了同样的回答。虽然我知道我们可能对服务器不太了解,但我希望我们至少能够模仿运行中的R代码,但它可能不像我想象的那么简单。尝试将两个请求(form R和python)发布到一个类似这样的站点,以便您可以准确地看到发送到服务器的内容,并可以比较它们以找出差异。
{'User-Agent': 'python-requests/2.25.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '226', 'Content-Type': 'multipart/form-data; boundary=b8f99a72145547743d035be5d9c1e983'}