如何实现更Pythonic的Boto3分页方式 无需使用while True循环
boto3分页器Pythonic写法
boto3官方提供的Paginator已经原生封装了所有分页逻辑,完全不需要手动处理resume_token和while True循环,你现有代码里的手动翻页逻辑是冗余的。
最简标准写法
直接迭代paginate()返回的迭代器即可,它会自动在当前页遍历完成后发起下一页请求,直到所有数据拉取完毕:
import boto3 client = boto3.client('acm', region_name='ap-southeast-2') paginator = client.get_paginator('list_certificates') for page in paginator.paginate(): for certificate in page['CertificateSummaryList']: print(certificate)
更简洁的进阶写法
配合Paginator内置的search()方法(基于JMESPath语法过滤字段),可以直接省略嵌套循环,一步提取所有证书条目:
import boto3 client = boto3.client('acm', region_name='ap-southeast-2') paginator = client.get_paginator('list_certificates') # 直接迭代所有页的CertificateSummaryList元素 for certificate in paginator.paginate().search('CertificateSummaryList[]'): print(certificate)
如果你需要自定义每页大小、最大返回页数等参数,直接在paginate()方法中传入PaginationConfig参数即可,不需要调整迭代逻辑:
# 示例:每页返回10条,最多拉取50条 for page in paginator.paginate(PaginationConfig={'PageSize': 10, 'MaxItems': 50}): # 后续逻辑不变 pass
内容的提问来源于stack exchange,提问作者Justin S
相关产品推荐
相关产品推荐

