2017-01-11 5 views
2

Я хочу, чтобы рассчитать размер всех файлов, которые находятся в S3 ведро в питоне, и это код, который я пытался до сих пор:Рассчитать размер всех файлов в ведро 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'] Любые идеи?

+0

Может быть, [это] (https://stackoverflow.com/questions/5315603/how-do-i-get-the-file-key-size -in-boto-s3). – rocksteady

+0

спасибо, но код этот вопрос неоднозначный – JavaQueen

ответ

1

Используйте вместо этого file['Size']. При использовании метода list_objects необходимо проверить значение response['IsTruncated'], так как ответ будет содержать до 1000 объектов. Если IsTruncated - True, используйте 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 

 Смежные вопросы

  • Нет связанных вопросов^_^