Utilizzo di file sparse in Python
-
13-09-2020 - |
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
. 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