2011-05-21 18 views
8

que estoy haciendo copias de seguridad de script en Python, pero necesito para obtener el tamaño del archivo tar.gz creado en MBcómo obtener el tamaño del archivo tar.gz en (MB) en python

¿Cómo puedo obtener el tamaño en MB de ese archivo

+1

¿Desea el tamaño del archivo descomprimido que está dentro del archivo o simplemente desea el tamaño del archivo? – plaes

+0

solo el tamaño del archivo en sí – Mahakaal

+0

Vea también: [Biblioteca reutilizable para obtener una versión legible del tamaño del archivo]] (http://stackoverflow.com/a/1094933/562769) –

Respuesta

24

No es claro por su pregunta si desea el tamaño comprimido o sin comprimir del archivo, pero en el primer caso, es fácil con la función os.path.getsizefrom the os module

>>> import os 
>>> os.path.getsize('flickrapi-1.2.tar.gz') 
35382L 

Para obtener la respuesta en megabytes que puede cambiar la respuesta a la derecha por 20, por ejemplo

os.path.getsize('large.tar.gz') >> 20 

A pesar de que la operación se hará en números enteros - si desea conservar las fracciones de un megabyte, se divide por (1024*1024.0) lugar. (Nota del .0 de manera que el divisor será un flotador.)

Actualización: En los comentarios a continuación, Johnsyweb señala una receta útil para más generalmente producing human readable representations of file sizes.

+0

significa que tengo que dividir por 1024 * 1024 para hacerlo en MB – Mahakaal

+0

Sí, así es. –

+2

Vea también esta receta [para obtener una representación legible por humanos de una cantidad de bytes] (http://code.activestate.com/recipes/577081-humanized-representation-of-a-number-of-bytes/). – Johnsyweb

2

Utilice la función os.stat() para obtener una estructura estadística. El atributo st_size de eso es el tamaño del archivo en bytes.

+0

(+1) Parece mucho mejor que mi idea (Inicialmente pensé que OP también quiere evaluar lo que está en el archivo tar). – chl

0

Según Python on-line docs, debe consultar los atributos size de un objeto TarInfo.

+0

funcionará para tar.gz también o solo para tar – Mahakaal

+0

@Mahakaal Funciona también con el archivo '* .tar' (simplemente léalo con la bandera' r' y no 'r: gz' pasado a' tarfile.open '). Sin embargo, da el tamaño de cada elemento incluido en el archivo tar (fácil de resumir, sin embargo), por lo que tal vez una de las respuestas alternativas se ajuste mejor a sus necesidades. – chl

Cuestiones relacionadas