首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >s3 in boto3 -如何由s3的分页器在boto3中移动到下一页

s3 in boto3 -如何由s3的分页器在boto3中移动到下一页
EN

Stack Overflow用户
提问于 2017-12-01 02:39:13
回答 2查看 4.2K关注 0票数 0

我试图通过分页器或buckets.objects.all()获取buckets.objects.all对象。但是没有任何想法可以通过下一页或下一张标记来移动。

我想用带有分页的html显示s3图像。

这是s3分页器代码。这是下一页没有经过的。

http://boto3.readthedocs.io/en/latest/guide/paginators.html

代码语言:javascript
复制
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(Bucket='my-bucket',
                                   PaginationConfig={'MaxItems': 10})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-01 16:45:55

(更新后,我删除了前面的内容,这些内容只适用于典型的list_objects,而不是分页器)

恭维@HelloV,如果您需要精确的分页控制,可以尝试boto3.client('s3').list_objects_v2而不是list_objects,

目前,分页器(‘list_objects’)将返回一个“标记”元素,允许您对特定的迭代器使用JMESPpath跳转。

代码语言:javascript
复制
filtered_iterator = page_iterator.search("Contents[?Marker = `<a_marker_key>`]")
for key_data in filtered_iterator:
    print(key_data)

但是,您仍然需要遍历整个分页器迭代器来存储标记键,并执行页面操作。对于list_objects_v2,您将得到"ContinuationToken“(如标记)和"NextContinuationToken",这使您能够更好地遍历页面,而不是list_object。

票数 0
EN

Stack Overflow用户

发布于 2017-12-02 19:31:41

您混淆了MaxItemsPageSize

MaxItems

限制在分页时返回的总返回项的最大数量。

PageSize

控制每个结果的每页返回的项数。

不需要跟踪下一个页面/令牌,迭代器将为您完成它。下面的代码每页返回2个对象,最多返回10个对象,这意味着最多可以进行5次迭代。MaxItemsPageSize都是可选的。现在清楚了吗?

代码语言:javascript
复制
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(Bucket='my-bucket',
                                   PaginationConfig={'PageSize': 2, 'MaxItems': 10})
for page in page_iterator:
  print(page['Contents'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47585842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档