Python 3.x 属性错误:';布尔';对象没有属性';阅读';调用requests.post时

Python 3.x 属性错误:';布尔';对象没有属性';阅读';调用requests.post时,python-3.x,rest,python-requests,Python 3.x,Rest,Python Requests,我试图发布一个带有curl的请求,如下所示: curl -X POST \ --header "Authorization: Bearer 48378438…" \ --header "X-Backtory-Storage-Id: 125653265" \ --form fileItems[0].fileToUpload=@"/path/to/file1.txt" \ --form fileItems[0].path="/path1/path2/" \

我试图发布一个带有
curl
的请求,如下所示:

curl -X POST \
    --header "Authorization: Bearer 48378438…" \
    --header "X-Backtory-Storage-Id: 125653265" \
    --form fileItems[0].fileToUpload=@"/path/to/file1.txt"  \
    --form fileItems[0].path="/path1/path2/"    \
    --form fileItems[0].replacing=true  \
    http://storage.backtory.com/files
upload_headers = {'Authorization':'Bearer' + ' ' + access_token, 'X-Backtory-Storage-Id':'48378438**********'}
upload_data = {'fileItems[0].fileToUpload': open('file.txt', 'rb'), 'fileItems[0].path': r'/path1/', 'fileItems[0].replacing': True}
upload_response = requests.post("http://storage.backtory.com/files", files=upload_data, headers=upload_headers)
print(upload_r)
我的代码是这样的:

curl -X POST \
    --header "Authorization: Bearer 48378438…" \
    --header "X-Backtory-Storage-Id: 125653265" \
    --form fileItems[0].fileToUpload=@"/path/to/file1.txt"  \
    --form fileItems[0].path="/path1/path2/"    \
    --form fileItems[0].replacing=true  \
    http://storage.backtory.com/files
upload_headers = {'Authorization':'Bearer' + ' ' + access_token, 'X-Backtory-Storage-Id':'48378438**********'}
upload_data = {'fileItems[0].fileToUpload': open('file.txt', 'rb'), 'fileItems[0].path': r'/path1/', 'fileItems[0].replacing': True}
upload_response = requests.post("http://storage.backtory.com/files", files=upload_data, headers=upload_headers)
print(upload_r)
但运行此代码后,我得到以下错误:

Traceback (most recent call last):
  File "backtory-test.py", line 27, in <module>
    upload_r = requests.post("http://storage.backtory.com/files", files=upload_data, headers=upload_headers)
  File "C:\Program Files\Python36\lib\site-packages\requests\api.py", line 112, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "C:\Program Files\Python36\lib\site-packages\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Program Files\Python36\lib\site-packages\requests\sessions.py", line 494, in request
    prep = self.prepare_request(req)
  File "C:\Program Files\Python36\lib\site-packages\requests\sessions.py", line 437, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "C:\Program Files\Python36\lib\site-packages\requests\models.py", line 308, in prepare
    self.prepare_body(data, files, json)
  File "C:\Program Files\Python36\lib\site-packages\requests\models.py", line 496, in prepare_body
    (body, content_type) = self._encode_files(files, data)
  File "C:\Program Files\Python36\lib\site-packages\requests\models.py", line 159, in _encode_files
    fdata = fp.read()
AttributeError: 'bool' object has no attribute 'read'
回溯(最近一次呼叫最后一次):
文件“backtory test.py”,第27行,在
上传=请求。发布(“http://storage.backtory.com/files,文件=上载\数据,标题=上载\标题)
文件“C:\Program Files\Python36\lib\site packages\requests\api.py”,第112行,在post中
返回请求('post',url,data=data,json=json,**kwargs)
文件“C:\Program Files\Python36\lib\site packages\requests\api.py”,第58行,在请求中
return session.request(method=method,url=url,**kwargs)
文件“C:\Program Files\Python36\lib\site packages\requests\sessions.py”,第494行,在请求中
准备=自我准备请求(req)
文件“C:\Program Files\Python36\lib\site packages\requests\sessions.py”,第437行,在prepare\u请求中
钩子=合并钩子(request.hooks,self.hooks),
文件“C:\Program Files\Python36\lib\site packages\requests\models.py”,第308行,在prepare中
self.prepare_body(数据、文件、json)
文件“C:\Program Files\Python36\lib\site packages\requests\models.py”,第496行,在正文中
(正文,内容类型)=自编码文件(文件,数据)
文件“C:\Program Files\Python36\lib\site packages\requests\models.py”,第159行,在编码文件中
fdata=fp.read()
AttributeError:'bool'对象没有属性'read'

我的代码的哪个部分有问题?

字典中的每个值都必须是类似于文件描述符的对象(即具有
读取方法)或元组(见下文)

True
既没有这样的方法(如错误所述),也不是元组

所以

应该是

upload_data = {'filename': open('file.txt', 'rb')}
另一个选项是提供一个元组作为值。这允许您设置一些选项。你可以阅读更多关于

路径
替换
听起来像是应该作为数据而不是作为
文件
字典的一部分发布的变量