使用Python请求库导入Qualtrics响应

使用Python请求库导入Qualtrics响应,python,python-requests,qualtrics,Python,Python Requests,Qualtrics,我正在尝试使用此处显示的API将csv响应导入Qualtrics:。但是,由于我是Python的noob,而且(从广义上说)是请求的noob,所以我很难弄清楚为什么我一直得到413。我已经走了这么远: formTest = { 'surveyId': 'my_id', 'file': { 'value': open('dataFiles/myFile.csv', 'rb'), 'options': { 'contentTyp

我正在尝试使用此处显示的API将csv响应导入Qualtrics:。但是,由于我是Python的noob,而且(从广义上说)是请求的noob,所以我很难弄清楚为什么我一直得到413。我已经走了这么远:

formTest = {
    'surveyId': 'my_id',
    'file': {
        'value': open('dataFiles/myFile.csv', 'rb'),
        'options': {
            'contentType': 'text/csv'
        }
    }
}

headersTest = {
    "X-API-TOKEN": "my_token",
    'content-type': "multipart/form-data"
}

r = requests.request("POST", url, data=formTest, headers=headersTest)
print(r.text)
formTest变量的格式是我在查看其他代码库以了解其角度实现时发现的,这可能不适用于python版本的代码。我可以成功地使用cUrl,但是Python请求,在我目前的情况下是可行的(出于各种原因)

在绝望中,我尝试直接将cUrl请求转换为python请求,但这似乎也没有多大帮助


以前有人做过这样的事吗?我查看了导入联系人之类的帖子,但也没有运气(因为需要发送的数据格式不同)。我有什么遗漏吗

最好不要混用post数据和文件,而是使用两个单独的字典。对于文件,您应该使用
files=
参数,因为它将POST数据编码为多部分表单数据,并创建所需的内容类型标题

import requests

url = 'Qualtrics API' 
file_path = 'path/to/file'
file_name = 'file.name'

data = {'surveyId':'my_id'}
files = {'file' : (file_name, open(file_path, 'rb'), 'text/csv')}
headers = {'X-API-TOKEN': 'my_token'}

r = requests.post(url, data=data, files=files, headers=headers)
print(r.text)
files['file']
中的第一个值是文件名(可选),后面是文件对象,后面是文件内容类型(可选)。

您可以在文档中找到更多信息:。

我收到一个错误,FileNotFoundError:[Errno 2]没有这样的文件或目录:“dataFiles/Correction of CW.csv”就像我的调查被称为“Correction of CW”一样,从qulatrics到python@rsc05文件的路径必须与脚本运行的路径相同,以便
requests.request()
可以读取它。另外,最好使用文件的绝对路径,以避免此类错误。谢谢,但我正试图直接从QualtricsAh下载它,我知道,在这种情况下,您不应该使用
files=
参数,只需提交请求并编写响应(
r.content
,在上面的示例中)我知道这可能是一个不同的问题:我把它贴在这里,因为我正在努力完成它