Python 3 + boto3 + s3:下载文件夹中的所有文件

11 浏览
0 Comments

Python 3 + boto3 + s3:下载文件夹中的所有文件

我正在编写 Python 3.4 + boto3 脚本以下载 S3 存储桶/文件夹中的所有文件。我使用的是 s3.resource 而不是 client,因为这个 EMR 集群已经有了密钥凭证。

这可以下载单个文件:

s3 = boto3.resource('s3')
bucket = "my-bucket"
file = "some_file.zip"
filepath = "some_folder/some_file.zip"
def DL(bucket, key, local_name):
    s3.Bucket(bucket).download_file(key, local_name)
DL(bucket, filepath, file)

但我需要下载存储桶中文件夹内的所有文件,格式如下:

some_file_1.zip
some_file_2.zip
some_file_3.zip, etc.

这应该很简单,但我猜我们无法使用通配符或模式匹配,如“some_file*”。所以我必须循环查找每个文件名?

每个文件名调用 download_file?

admin 更改状态以发布 2023年5月23日
0
0 Comments

您可以使用listobjectsv2并传递前缀,仅获取您的S3“文件夹”内的密钥。现在,您可以使用for循环遍历所有这些键,并下载它们。如果需要进一步过滤它们,请使用条件。

0