spärliche Dateinutzung in Python
-
13-09-2020 - |
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
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.