使用 boto3 从 was s3 存储桶下载文件时没有此类文件或目录

zen*_*vil 7 amazon-s3 amazon-web-services boto3

我想从aws s3存储下载整个存储桶“my-bucket”,并将其保存在路径“./resources/my-bucket”中。因此,我正在执行以下操作,导入 boto3,使用 access_key_id 和 Secret_access_key 创建资源,然后迭代存储桶中的所有对象并使用 download_file api 调用下载它们:

import boto3
s3 = boto3.resource(
service_name="s3",
region_name="us-west-1",
aws_access_key_id="AWUHWIEDFB",
aws_secret_access_key="AOIERJGOERWHJO"
)

for o in s3.Bucket("my-bucket").objects.all():
    filename = o.key
    s3.Bucket("my-bucket").download_file(Key=filename, Filename="./resources/my-bucket/" + filename)
Run Code Online (Sandbox Code Playgroud)

s3 存储桶 my-bucket 本身有一个名为“input”的文件夹,其中仅包含 png 和 jpg 文件,并且根路径中还有另一个 .pt 文件。

但我收到错误:

FileNotFoundError: [Errno 2] No such file or directory: './resources/my-bucket/input/.F89bdcAc'
Run Code Online (Sandbox Code Playgroud)

我不知道 .F89bdcAc 是什么意思,也不知道为什么 boto3 试图找到该文件。

如何解决这个问题?

Jul*_*ien 4

请参阅这篇文章的答案:Boto3 to download all files from a S3 Bucket

它将存储桶中目录的处理和文件(密钥)的处理分开。您系统上的目录是使用 os.makedirs 即时创建的,您将不会再收到此错误。您应该更改您的访问密钥/秘密!