Python + Boto:botocore.exceptions.ClientError:调用HeadObject操作时发生错误(404):未找到

Dan*_* Me 16 python amazon-s3 amazon-web-services python-2.7 boto3

我正在从AWS S3 Bucket下载文件,如下所示:

import boto3

s3client = boto3.client("s3")
s3 = boto3.resource('s3')

bucket_name = 'practice_bucket'
bucket = s3.Bucket(bucket_name)

for obj in bucket.objects.all():
    filename = obj.key.rsplit('/')[-1]
    s3client.download_file(bucket_name, obj.key, "/txt/" + filename)
Run Code Online (Sandbox Code Playgroud)

当试图将一些文件放在子目录下时,例如/txt/我收到错误:botocore.exceptions.ClientError: An error occurred (404) when calling the HeadObject operation: Not Found.

奇怪的是,它适用于使用相同方法的其他文件类型,但不适用于具有.json扩展名的文件类型.

可能是什么问题?我甚至试过没有把它们放在一个绝对的子目录路径中,我没有得到任何错误,并将文件下载到与脚本下载相同的目录中.但是当我实际定义下载文件的路径时,我得到了错误.

提前谢谢你,一定要投票/接受答复

小智 6

你的代码是正确的。

botocore.exceptions.ClientError:调用 HeadObject 操作时发生错误(404):未找到

当您尝试获取的对象不存在于存储桶中时,会引发此错误。

  • 通过额外的支持信息可以改进您的答案。请[编辑]添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (2认同)