gpt4 book ai didi

python Boto3 S3 : List only current directory file ignoring subdirectory files

转载 作者:行者123 更新时间:2023-12-05 09:28:15 24 4
gpt4 key购买 nike

我想从前缀文件夹而不是前缀文件夹内的子目录下载文件。我在下面运行,但它列出了前缀文件夹内的所有文件,包括子目录。是否可以仅列出前缀文件夹中的文件?

bucket = aws_resource_session.Bucket(bucket_name)
for obj in bucket.objects.filter(Prefix=s3_end_point_properties["prefix"]):
print(obj.key)

谢谢,伊姆兰汗

最佳答案

而不是使用更高级别的资源接口(interface)Bucket ,它只会为您提供存储桶中所有对象的列表,您可以使用较低级别的 Client界面。具体来说,如果您在调用 list_objects_v2 时包含 Delimiter 参数那么结果将返回“Contents”中给定前缀的对象和“CommonPrefixes”中的“子文件夹”。

例子:

import boto3
s3 = boto3.client("s3")

rsp = s3.list_objects_v2(Bucket="mybucket", Prefix="myprefix/", Delimiter="/")

print("Objects:", list(obj["Key"] for obj in rsp["Contents"]))
print("Sub-folders:", list(obj["Prefix"] for obj in rsp["CommonPrefixes"]))

带有 Prefix="csv/" 的示例输出:

Objects: ['csv/a.csv', 'csv/b.csv', 'csv/c.csv']
Sub-folders: ['csv/corrupt/', 'csv/complete/']

如果您不包含 Delimiter 参数,则此前缀及以下的所有对象都将出现在 "Contents" 中,例如:

Objects: ['csv/a.csv', 'csv/b.csv', 'csv/c.csv', 'csv/corrupt/d.csv', 'csv/complete/e.csv']

关于 python Boto3 S3 : List only current directory file ignoring subdirectory files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71577584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com