You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现更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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:06:03