仅从 s3 存储桶文件夹中获取文件名

新手上路,请多包涵

我有一个名为“Sample_Bucket”的 s3 存储桶,其中有一个名为“Sample_Folder”的文件夹。我只需要获取文件夹“Sample_Folder”中所有文件的名称。

我正在使用以下代码来这样做 -

 import boto3
s3 = boto3.resource('s3', region_name='us-east-1', verify=False)
    bucket = s3.Bucket('Sample_Bucket')
    for files in bucket.objects.filter(Prefix='Sample_Folder):
        print(files)

变量文件包含以文件名作为键的对象变量。

 s3.ObjectSummary(bucket_name='Sample-Bucket', key='Sample_Folder/Sample_File.txt')

但我只需要文件名。我该如何提取它?或者还有其他方法吗?

原文由 TeeKay 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

您应该使用 list_object_v2 ,它会为您提供所使用的已定义前缀的列表。

 ... snippet ...

filenames = []

get_filenames(s3):
    result = s3.list_objects_v2(Bucket=bucket, Prefix=prefix)
    for item in result['Contents']:
        files = item['Key']
        print(files)
        filenames.append(files)   #optional if you have more filefolders to got through.
    return filenames

get_filenames(my_bucketfolder)

原文由 ZF007 发布,翻译遵循 CC BY-SA 4.0 许可协议

干得好。

 import boto3

bucket = "Sample_Bucket"
folder = "Sample_Folder"
s3 = boto3.resource("s3")
s3_bucket = s3.Bucket(bucket)
files_in_s3 = [f.key.split(folder + "/")[1] for f in s3_bucket.objects.filter(Prefix=folder).all()]

原文由 rob 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题