【问题标题】:Exclude S3 folders from bucket.objects.filter(Prefix=prefix)从 bucket.objects.filter(Prefix=prefix) 中排除 S3 文件夹
【发布时间】:2022-02-13 16:42:08
【问题描述】:

我有一个 python boto3 代码,它列出了 s3 文件夹/前缀下的所有对象。此代码将返回所有对象,即

临时/测试/日期=17-09-2019/

temp/test/date=17-09-2019/100.json

我想从响应中排除 temp/test/date=17-09-2019/ 键。我知道 s3 中不存在文件夹的概念。请在下面找到我的代码:

bucket_name = 'temp-bucket'
prefix = 'temp/test/date=17-09-2019'

bucket = s3_resource.Bucket(bucket_name)
s3_files = list(bucket.objects.filter(Prefix=prefix))

for file in s3_files:
    print(file)

有没有办法从响应中排除文件夹?

谢谢

【问题讨论】:

    标签: amazon-s3 boto3


    【解决方案1】:

    没有办法过滤掉结果,但你可以这样做:

    import boto3
    
    bucket_name = 'temp-bucket'
    s3 = boto3.resource('s3')
    
    ignore = s3.Bucket(bucket_name ).objects.filter(Prefix='temp/test/date=17-09-2019')
    response = s3.Bucket(bucket_name ).objects.all()
    
    for item in response:
        if item not in ignore:
            print(item.key)
    

    【讨论】:

      【解决方案2】:

      您可以查看item.size,因为目录的大小=0:

      for item in response:
          if item.size > 0:
              print(item.key)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-11
        • 1970-01-01
        • 2019-09-14
        • 2016-08-28
        • 1970-01-01
        • 2020-10-04
        • 2012-07-03
        相关资源
        最近更新 更多