Frage

Ich erstelle Sparse-Dateien in Python wie folgt:

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

Wenn die Datei fertig ist, belegt sie 0 Speicherplatz, aber ihre Inode-Größe ist auf meinen gekürzten Wert (1000 KB) eingestellt:

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

Wie erhalte ich die tatsächliche Speicherplatznutzung (zugewiesene Größe) der Datei in Python?Der stat Der Aufruf gibt die scheinbare Größe der Datei zurück, und ich habe keine Ahnung, wie ich die tatsächliche Nutzung anders ermitteln kann, als die gesamte Datei zu lesen (sie kann ziemlich groß werden).

>>> os.stat('testfile').st_size
1024000
War es hilfreich?

Lösung

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

Tadaa :)

st_blocks ist die Anzahl der 512-Byte-Blöcke, die der Datei tatsächlich zugewiesen sind.Beachten Sie, dass st_blocks Es ist nicht garantiert, dass es in allen Betriebssystemen vorhanden ist, aber diejenigen, die Sparse-Dateien unterstützen, tun dies im Allgemeinen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top