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

Jav*_*een 5 python size file amazon-s3

我想计算 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']
Run Code Online (Sandbox Code Playgroud)

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

fra*_*ijo 7

使用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
Run Code Online (Sandbox Code Playgroud)