使用boto3列出对象时出错:botocore.parsers.ResponseParserError:

问题描述 投票:0回答:1

嗨,我正在使用boto3从s3中提取数据。

result = s3.list_objects_v2(
            Bucket = bucket, 
            Prefix ='1/abc/2/cde',
            )

我正在尝试在“前缀”之后列出所有文件夹名称

我收到以下错误

  File "/usr/local/lib/python3.7/site-packages/botocore/client.py", line 357, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python3.7/site-packages/botocore/client.py", line 648, in _make_api_call
    operation_model, request_dict, request_context)
  File "/usr/local/lib/python3.7/site-packages/botocore/client.py", line 667, in _make_request
    return self._endpoint.make_request(operation_model, request_dict)
  File "/usr/local/lib/python3.7/site-packages/botocore/endpoint.py", line 102, in make_request
    return self._send_request(request_dict, operation_model)
  File "/usr/local/lib/python3.7/site-packages/botocore/endpoint.py", line 135, in _send_request
    request, operation_model, context)
  File "/usr/local/lib/python3.7/site-packages/botocore/endpoint.py", line 167, in _get_response
    request, operation_model)
  File "/usr/local/lib/python3.7/site-packages/botocore/endpoint.py", line 218, in _do_get_response
    response_dict, operation_model.output_shape)
  File "/usr/local/lib/python3.7/site-packages/botocore/parsers.py", line 242, in parse
    parsed = self._do_parse(response, shape)
  File "/usr/local/lib/python3.7/site-packages/botocore/parsers.py", line 775, in _do_parse
    self._parse_payload(response, shape, member_shapes, final_parsed)
  File "/usr/local/lib/python3.7/site-packages/botocore/parsers.py", line 811, in _parse_payload
    original_parsed = self._initial_body_parse(response['body'])
  File "/usr/local/lib/python3.7/site-packages/botocore/parsers.py", line 897, in _initial_body_parse
    return self._parse_xml_string_to_dom(xml_string)
  File "/usr/local/lib/python3.7/site-packages/botocore/parsers.py", line 437, in _parse_xml_string_to_dom
    "invalid XML received:\n%s" % (e, xml_string))
botocore.parsers.ResponseParserError: Unable to parse response (not well-formed (invalid token): line 1, column 0), invalid XML received:


b'{"bucket":"bucket","maxKeys":100,"versions":false,"prefix":"1\\/abc\\/2\\/cde","truncated":false,"results":[{"size":492574,"etag":"\\"BS6196892E3E0762DB660D395019F9E3\\"","lastModified":15634564256981,"version":"t4950050-afcf-11e9-bc48-e41d2d615800","key":"1\\/abc\\/2\\/cde\\/folder1\\/folder2\\/file.csv"}]}'

这是因为它无法解析“ etag”吗?请帮助!

谢谢

amazon-web-services parsing boto3 etag
1个回答
0
投票

来自[list_objects][1]

EncodingType(字符串)-请求Amazon S3对响应中的对象键进行编码,并指定要使用的编码方法。对象键可以包含任何Unicode字符;但是,XML 1.0解析器无法解析某些字符,例如具有ASCII值从0到10的字符。对于XML 1.0不支持的字符,您可以添加此参数以请求Amazon S3对响应中的键进行编码。

在您的情况下,您的前缀包含ASCII value from 0 to 10

© www.soinside.com 2019 - 2024. All rights reserved.