【问题标题】:How to get only files only from specific path folder (or path prefix) in an S3 bucket如何仅从 S3 存储桶中的特定路径文件夹(或路径前缀)获取文件
【发布时间】:2021-02-24 14:50:21
【问题描述】:

我只想从 S3 存储桶中的特定路径文件夹(或路径前缀)获取文件。但是下面的代码递归地搜索路径中的文件并从子文件夹中提供文件。

s3_resource = boto3.resource(
    's3',
    aws_access_key_id='xx',
    aws_secret_access_key='xx'
)

my_bucket = s3_resource.Bucket('test')
for s3_object in my_bucket.objects.filter(Prefix='\test\folder_with_files'):
    path, filename = os.path.split(s3_object.key)
    keyslist.append(s3_object.key)
    bucket, key = s3_object.key.split('/',2)[-1].split('/',1)
#I am trying to get the last slice from the output path prefix as filename above

【问题讨论】:

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


    【解决方案1】:
    s3sr = resource('s3')
    bucket = 'your-bucket'
    prefix = 'your-prefix/' # if no prefix, pass ''
    
    def get_keys_from_prefix(bucket, prefix):
        '''gets list of keys and dates for given bucket and prefix'''
        keys_list = []
        paginator = s3sr.meta.client.get_paginator('list_objects_v2')
        # use Delimiter to limit search to that level of hierarchy
        for page in paginator.paginate(Bucket=bucket, Prefix=prefix, Delimiter='/'):
            keys = [content['Key'] for content in page.get('Contents')]
            print('keys in page: ', len(keys))
            keys_list.extend(keys)
        return keys_list
    
    keys_list = get_keys_from_prefix(bucket, prefix)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      • 2021-10-12
      • 2020-04-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      相关资源
      最近更新 更多