【问题标题】:How to get only the sub folder names from a S3 bucket如何仅从 S3 存储桶中获取子文件夹名称
【发布时间】:2021-08-09 07:32:55
【问题描述】:

我有一个 S3 存储桶,其中包含许多子文件夹。 比方说,

'test-bucket'
-->'photos'
    -->2020
    -->2019
    -->2018
    ...

在'test-bucket'中有一个名为'photos'的子文件夹,在photos文件夹中可能有多个子文件夹。

所以我需要遍历照片桶并只获取超过 2 年的照片(即从 2018 年开始)。这是我下面使用 python 库 boto3 的代码。

current_year = datetime.datetime.now().year
client.list_objects_v2(Bucket='test-bucket',Prefix = 'photos/'+str(current_year-3),MaxKeys=1000 )

但这仅返回 2018 年的数据。提出一个想法来循环超过 2 年的整个年份。 提前致谢

【问题讨论】:

  • 在 2018 年、2019 年和 2020 年运行该循环。for year in range(current_year - 3, current_year): 或类似的东西。

标签: python amazon-web-services amazon-s3 boto3


【解决方案1】:

您可以在传递Delimiter 值的同时使用ListObjects() 获取文件夹名称。然后它将文件夹列表返回为CommonPrefixes。

这里有一些示例代码:

import boto3

s3_client = boto3.client('s3')
objects = s3_client.list_objects_v2(Bucket='my-bucket', Delimiter='/', Prefix ='photos/')

for prefix in objects['CommonPrefixes']:
    print(prefix['Prefix'])

【讨论】:

  • 这还能回答 op 的问题吗?这段代码只打印出最顶层的文件夹。添加 prefix = 'str' arg 以获取第一级以外的文件夹
猜你喜欢
  • 2020-04-01
  • 2016-06-18
  • 2021-07-03
  • 2013-01-17
  • 2020-11-10
  • 2020-11-25
  • 1970-01-01
  • 2021-01-15
相关资源
最近更新 更多