Pregunta

Estoy creando archivos escasos en Python de la siguiente manera:

>>> f = open('testfile', 'ab')
>>> f.truncate(1024000)
>>> f.close()

Cuando se realiza el archivo, se ocupa de 0 espacio en disco, pero su tamaño de inodo se establece en mi valor truncado (1000k):

igor47@piglet:~/test$ ls -lh testfile 
-rw-r--r-- 1 igor47 igor47 1000K 2010-07-09 04:02 testfile
igor47@piglet:~/test$ du -hs testfile 
0   testfile

¿Cómo obtengo el uso del espacio real del archivo (tamaño asignado) dentro de Python?La llamada stat devuelve el tamaño aparente del archivo, y no tengo idea de cómo para obtener el uso real que no sea leer el archivo completo (puede volverse bastante grande)

>>> os.stat('testfile').st_size
1024000

¿Fue útil?

Solución

>>> os.stat('testfile').st_blocks*512
0

tadaa :)

st_blocks es el número de bloques de 512 bytes en realidad asignados al archivo.Tenga en cuenta que no se garantiza que st_blocks esté presente en todos los sistemas operativos, pero aquellos que admiten los archivos escasos generalmente hacen.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top