擅长:python、mysql、java
<p>在bucket.objects.filter()(以及大多数其他返回对象集合的高级boto3调用)返回没有固定长度的iterable对象。这是经过深思熟虑的,因为列表的潜在规模可能非常大。为了防止你的应用程序耗尽内存,它们永远不会一次全部加载,所以大小一直是未知的,直到你真正要求每一个项目并到达最后。在</p>
<p>如果您确定列表很短,请使用<code>bucketObjects = list(bucketObjects)</code>获取所有列表,但最好不要这样做。一次读一个数:</p>
<pre><code>c=0
for b in bucketObjects: c+=1
</code></pre>
<p>(如果您真的需要最大的效率,请尝试使用低级api:<code>client=boto3.client('s3')</code>并在几个调用中获取列表的大块内容,或者如果您确定它不是太大,则立即获取整个列表;但这很少值得这样做)</p>