我试图通过分页器或buckets.objects.all()获取buckets.objects.all对象。但是没有任何想法可以通过下一页或下一张标记来移动。
我想用带有分页的html显示s3图像。
这是s3分页器代码。这是下一页没有经过的。
http://boto3.readthedocs.io/en/latest/guide/paginators.html
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(Bucket='my-bucket',
PaginationConfig={'MaxItems': 10})发布于 2017-12-01 16:45:55
(更新后,我删除了前面的内容,这些内容只适用于典型的list_objects,而不是分页器)
恭维@HelloV,如果您需要精确的分页控制,可以尝试boto3.client('s3').list_objects_v2而不是list_objects,
目前,分页器(‘list_objects’)将返回一个“标记”元素,允许您对特定的迭代器使用JMESPpath跳转。
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。
发布于 2017-12-02 19:31:41
您混淆了MaxItems和PageSize。
MaxItems
限制在分页时返回的总返回项的最大数量。
PageSize
控制每个结果的每页返回的项数。
不需要跟踪下一个页面/令牌,迭代器将为您完成它。下面的代码每页返回2个对象,最多返回10个对象,这意味着最多可以进行5次迭代。MaxItems和PageSize都是可选的。现在清楚了吗?
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'])https://stackoverflow.com/questions/47585842
复制相似问题