如何在Google Cloud Storage Python客户端库中的list_blobs函数中进行分页

use*_*609 9 python google-app-engine google-cloud-storage google-cloud-platform

我想使用Python客户端库获取 Google云端存储桶中所有blob的列表.

根据文档,我应该使用该list_blobs()功能.该函数似乎使用两个参数max_resultspage_token实现分页.我不确定如何使用它们.

特别是,page_token从哪里获得?

我原以为这list_blobs()page_token在后续调用中提供,但我找不到任何文档.

另外,max_results是可选的.如果我不提供它会怎么样?有默认限制吗?如果是这样,它是什么?

use*_*609 9

list_blobs()确实使用分页,但是您不使用page_token它来实现它。

怎么运行的:

list_blobs()工作方式是返回一个迭代器,该迭代器对所有结果进行迭代,并后台进行分页。因此,只需执行此操作即可获得所有结果,并根据需要获取页面:

for blob in bucket.list_blobs()
    print blob.name
Run Code Online (Sandbox Code Playgroud)

该文档有误/误导:

截至2017年4月26日,文档内容如下:

page_token(str)–(可选)下一个“斑点”的不透明标记。如果未通过,将返回Blob的第一页。

这意味着结果将是单页结果,并page_token确定哪一页。这是不正确的。结果迭代器遍历多个页面。什么page_token实际上代表的是迭代器应该哪个页面START的。如果没有page_token提供,它将从第一页开始。

有帮助的了解:

max_results 限制迭代器返回的结果总数。

如果需要,迭代器会公开页面:

for page in bucket.list_blobs().pages:
    for blob in page:
        print blob.name
Run Code Online (Sandbox Code Playgroud)