计算存储桶S3中所有文件的大小

时间:2017-01-11 08:13:57

标签: python file amazon-s3 size

我想计算python中S3存储桶中所有文件的大小,这是我到目前为止尝试的代码:

import boto3

s3_client = boto3.client('s3')
bucket = 'bucket-name'
prefix = 'path/to/folder'

len=0
response = s3_client.list_objects(Bucket = bucket,Prefix = prefix)
for file in response['Contents']:
    name = file['Key'].rsplit('/', 1)
    len+=name['ContentLength']

我不确定如何获取文件的大小:name['ContentLength'] 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

请改用file['Size']。 如果使用list_objects方法,则必须检查response['IsTruncated']的值,因为响应最多包含1000个对象。如果IsTruncatedTrue,请使用response['NextMarker']作为Prefix列出广告资源中的剩余对象。

或者,您可以使用Bucket

s3 = boto3.resource('s3')
bucket = s3.Bucket('bucket-name')
total_size = 0
for k in bucket.objects.all():
    total_size += k.size