Domanda

Sto creando file sparsi in Python come segue:

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

Quando il file è terminato, occupa uno spazio su disco, ma la sua dimensione inode è impostata sul mio valore troncato (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
.

Come posso ottenere l'utilizzo dello spazio reale del file (dimensioni assegnate) all'interno di Python?La chiamata stat restituisce la dimensione apparente del file e non ho idea di come altro per ottenere l'uso reale oltre a leggere l'intero file (potrebbe diventare abbastanza grande)

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

È stato utile?

Soluzione

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

Tadaa :)

st_blocks è il numero di blocchi da 512 byte effettivamente assegnati al file.Nota che st_blocks non è garantito per essere presente in tutti i sistemi operativi, ma quelli che supportano generalmente i file sparsi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top