我一直使用的方法是将Collection转换为List并查询长度:
s3 = boto3.resource('s3')
bucket = s3.Bucket('my_bucket')
size = len(list(bucket.objects.all()))
然而,这会强制解析整个集合,并首先消除使用集合的好处。有一个更好的方法吗?
如果不列出所有对象,则无法获取存储桶中键的数量,这是 AWS S3 的限制(请参阅https://forums.aws.amazon.com/thread.jspa?messageID=164220 https://forums.aws.amazon.com/thread.jspa?messageID=164220).
获取对象摘要(HEAD)不会获取实际数据,因此应该是一个相对便宜的操作,如果您只是丢弃列表,那么您可以这样做:
size = sum(1 for _ in bucket.objects.all())
这将为您提供对象的数量,而无需构建列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)