list_objects example aws python amazon-s3 boto

python - example - ¿Cómo obtengo el tamaño del archivo/clave en boto S3?



python s3 bucket (2)

Esto funcionaría:

bk = conn.get_bucket(''my_bucket_name'') key = bk.lookup(''my_key_name'') print key.size

El método de búsqueda simplemente hace una solicitud HEAD en el depósito para el nombre de clave, por lo que devolverá todos los encabezados (incluida la longitud del contenido) de la clave, pero no transferirá el contenido real de la clave.

La tutoría S3 menciona esto pero no muy explícitamente y no en este contexto exacto. Agregaré una sección sobre esto para ayudar a que sea más fácil de encontrar.

Nota: por cada enlace antiguo como http://boto.cloudhackers.com/s3_tut.html que devuelve un 404, agregue "/en/latest" justo después del ".com" : http://boto.cloudhackers.com/en/latest/s3_tut.html . (Alguien necesita explorar mod_rewrite ...)

Debe haber una manera fácil de obtener el tamaño del archivo (tamaño de la clave) sin pasar un archivo completo. Puedo verlo en las Propiedades del navegador AWS S3. Y creo que puedo sacarlo del encabezado "Content-length" de una solicitud "HEAD". Pero no estoy conectando los puntos sobre cómo hacer esto con boto. Felicitaciones extra si publica un enlace a algunos ejemplos más completos que los que se encuentran en los documentos boto estándar .

EDITAR: Así que lo siguiente parece ser el truco (aunque al mirar el código fuente no estoy del todo seguro):

bk = conn.get_bucket(''my_bucket_name'') ky = boto.s3.key.Key(bk) ky.open_read() ## This sends a GET request. print ky.size

Por ahora dejaré la pregunta abierta para comentarios, mejores soluciones o consejos para ejemplos.


en boto3 :

s3.head_object también realiza una solicitud HEAD para recuperar los metadatos sobre el objeto:

s3 = boto3.client(''s3'') response = s3.head_object(Bucket=''bucketname'', Key=''keyname'') size = response[''ContentLength'']