2017-06-05 23 views
0

我使用Paginator迭代某S3桶的内容(以下http://boto3.readthedocs.io/en/latest/guide/paginators.html#creating-paginators):在Boto3中,如何使用其他关键字参数为list_objects创建Paginator?

client = boto3.client('s3') 
    paginator = client.get_paginator('list_objects') 
    page_iterator = paginator.paginate(Bucket=<my_bucket>) 

    for page in page_iterator: 
     for object in page['Contents']: 
      key = object['Key'] 

在这个例子中,该方法名'list_objects'被作为字符串传递。然而,我实际上喜欢使用“部分”函数list_objects和关键字参数Prefix="files/",因为我感兴趣的对象位于files/'目录'(参见http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.list_objects)。

这可能吗? (从文档中我不清楚如何做到这一点;我可以在两个for循环中执行if key.startswith("files/"),但这看起来不是一个优雅的解决方案)。

回答

1

你在同一份文件中错过了这个吗? Filtering results

S3.Paginator.list_objects.paginate()接受用于过滤前缀服务器端的分页结果前缀参数将它们发送到客户端之前:

client = boto3.client('s3', region_name='us-west-2') 
paginator = client.get_paginator('list_objects') 
operation_parameters = {'Bucket': 'my-bucket', 
         'Prefix': 'foo/baz'} 
page_iterator = paginator.paginate(**operation_parameters) 
for page in page_iterator: 
    print(page['Contents']) 
相关问题