python-3.x - 不断收到AttributeError:'str'对象没有属性'items'
问题描述
我正在编写一个尝试将图像上传到服务器的 Python 脚本,当我运行以下代码片段时,我不断收到“str”对象的属性错误没有属性“items”,并且不确定我做错了什么。任何有关如何编写此内容的帮助将不胜感激:
response = requests.request("GET", folder_url, headers=headers, data=payload)
jsonResponse = response.json()
for key, value in jsonResponse.items():
print(key, ":", value)
URL = jsonResponse["presignedUrl"]
processnum = jsonResponse["processId"]
assetupload = requests.request("PUT", URL, headers='Content-Type: image/tiff', data=payload)
response.json 如下:
This is the response.json: {'presignedUrl': 'https://webdamuploads.s3.amazonaws.com/13870_d944a723_4232_4892_bdfd_26dd73edec44.tif?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJBNEEVWEAALCCECQ%2F20200806%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200806T163417Z&X-Amz-SignedHeaders=host&X-Amz-Expires=180&X-Amz-Signature=2856c1a615b88a91fc6c9fee02eae2a051b60b902660d04890d795057dd097e3', 'processId': '200483605'}
Traceback 错误是这样的:
Traceback (most recent call last):
File "C:\Users\jphelps\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\jphelps\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "c:\Users\jphelps\.vscode\extensions\ms-python.python-2020.7.96456\pythonFiles\lib\python\debugpy\__main__.py", line 45, in <module>
cli.main()
File "c:\Users\jphelps\.vscode\extensions\ms-python.python-2020.7.96456\pythonFiles\lib\python\debugpy/..\debugpy\server\cli.py", line 430, in main
run()
File "c:\Users\jphelps\.vscode\extensions\ms-python.python-2020.7.96456\pythonFiles\lib\python\debugpy/..\debugpy\server\cli.py", line 267, in run_file
runpy.run_path(options.target, run_name=compat.force_str("__main__"))
File "C:\Users\jphelps\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 265, in run_path
return _run_module_code(code, init_globals, run_name,
File "C:\Users\jphelps\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 97, in _run_module_code
_run_code(code, mod_globals, init_globals,
File "C:\Users\jphelps\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "l:\ISG Documentation\Python\individual scripts\upload_asset_to_webdam.py", line 122, in <module>
assetupload = requests.request("PUT", URL, headers='Content-Type:image/tiff', data=payload)
File "C:\Users\jphelps\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\jphelps\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\sessions.py", line 516, in request
prep = self.prepare_request(req)
File "C:\Users\jphelps\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\sessions.py", line 449, in prepare_request
p.prepare(
File "C:\Users\jphelps\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\models.py", line 315, in prepare
self.prepare_headers(headers)
File "C:\Users\jphelps\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\models.py", line 447, in prepare_headers
for header in headers.items():
AttributeError: 'str' object has no attribute 'items'
解决方案
我试图通过给定的代码在 python 中重新创建您的问题
jsonResponse={'presignedUrl': 'https://webdamuploads.s3.amazonaws.com/13870_d944a723_4232_4892_bdfd_26dd73edec44.tif?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJBNEEVWEAALCCECQ%2F20200806%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200806T163417Z&X-Amz-SignedHeaders=host&X-Amz-Expires=180&X-Amz-Signature=2856c1a615b88a91fc6c9fee02eae2a051b60b902660d04890d795057dd097e3', 'processId': '200483605'}
for key, value in jsonResponse.items():
print(key, ":", value)
a=jsonResponse["presignedUrl"]
print(a)
我得到了
presignedUrl : https://webdamuploads.s3.amazonaws.com/13870_d944a723_4232_4892_bdfd_26dd73edec44.tif?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJBNEEVWEAALCCECQ%2F20200806%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200806T163417Z&X-Amz-SignedHeaders=host&X-Amz-Expires=180&X-Amz-Signature=2856c1a615b88a91fc6c9fee02eae2a051b60b902660d04890d795057dd097e3
processId : 200483605
https://webdamuploads.s3.amazonaws.com/13870_d944a723_4232_4892_bdfd_26dd73edec44.tif?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJBNEEVWEAALCCECQ%2F20200806%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200806T163417Z&X-Amz-SignedHeaders=host&X-Amz-Expires=180&X-Amz-Signature=2856c1a615b88a91fc6c9fee02eae2a051b60b902660d04890d795057dd097e3
当您尝试.items
对 str 执行操作时,可能会出现此问题。如下所示
jsonResponse='hellow world'
for key, value in jsonResponse.items():
print(key, ":", value)
a=jsonResponse["presignedUrl"]
print(a)
这将引发错误
for key, value in jsonResponse.items():
AttributeError: 'str' object has no attribute 'items'
推荐阅读
- java - Java将字符串转换为数组“[1,2,3,4,5,5]”到[1,2,3,4,5,5]
- python - python 2.7:错误:root:找不到哈希 md5 的代码
- reactjs - 如何实现 create-react-app 的自动更新?
- c# - 如何在 C# windows 窗体中实现 APIKey v.1 身份验证?
- c# - 使用 NamedScope 扩展时如何让 Ninject 停用范围定义对象?
- python - Python:使用带有照片的 WD_ALIGN_PARAGRAPH.RIGHT 时出现问题
- android - 根据安装的国家应用程序转换货币
- java - 设置特定 JShell 的输出流
- reactjs - 如何使用 jest 和酶测试 redux saga
- tree - 如何按顺序打印二叉树?