无法在Python中发布CSV文件

shyt4zoc  于 2022-12-06  发布在  Python
关注(0)|答案(4)|浏览(271)

我在python 3中使用www.example.com方法上传CSV文件时遇到问题requests.post。

from requests.auth import HTTPBasicAuth
import csv
import requests

user='myuser'
pw='mypass'
advertiserid='10550'
campaignid='12394'
url='http://example.example.com/api/edc/upload/'+advertiserid+'/'+campaignid+'/'+'?encoding=utf-8&fieldsep=%3B&decimalsep=.&date=DD%2FMM%2FYYYY&info=1&process=1'
csv="myfile.csv"

with open(csv, 'r') as f:
    r = requests.post(url, files={csv: f})
    print(r)

输出为“响应[502]”
知道问题出在哪里吗?
非常感谢!

xmd2e60i

xmd2e60i1#

您可以在此处参考Requests库的文档:多部分编码文件后
将请求行更改为:

r = requests.post(url, files={'report.csv': f})
bvjveswy

bvjveswy2#

尝试以二进制模式打开它?并使用特定的“text/csv”MIME类型?

with open(csv, 'rb') as f:
    r = requests.post(url, files={'file': ('myfile.csv', f, 'text/csv', {'Expires': '0'})})
    print(r.text)

如果还是不行,尝试不使用二进制文件,但仍使用其余部分。如果还是不行,打印确切的错误信息。502(错误网关)可能只是意味着你没有找到正确的URL。(你没有找到example.com,对吗?)

pxy2qtax

pxy2qtax3#

csv="myfile.csv"

url='http://example.example.com/api/edc/upload/'+advertiserid+'/'+campaignid+'/'+'?encoding=utf-8&fieldsep=%3B&decimalsep=.&date=DD%2FMM%2FYYYY&info=1&process=1'

files = {'upload_file': open(csv,'rb')}

r = requests.post(url, files=files)
yks3o0rb

yks3o0rb4#

假设我有一个rest API来导入CSV文件(多部分编码文件)

相应的python请求应该如下所示。

import requests

​
hierarchy_file_name = '/Users/herle/ws/LookoutLab/data/monitor/Import_Hierarchy_Testcase_v2.csv'

headers = {
  'x-api-key': **REST_API_KEY**,
  'x-api-token': **REST_API_TOKEN**,
  'accept': 'application/json'
}

files = {'file': (hierarchy_file_name, open(hierarchy_file_name, 'rb'), 'text/csv')}
url = "https://abcd.com"
response = requests.post(url +'/api/v2/core/workspaces/import/validate',
                        files=files, verify=False, headers=headers)
print("Created")
print(response)
print(response.text)

注意:请确保不要在标题中添加'Content-Type': 'multipart/form-data'****

相关问题