Вопрос

Я создаю разреженные файлы в python следующим образом:

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

когда файл готов, он занимает 0 места на диске, но размер его индексного индекса установлен на мое усеченное значение (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

Как мне получить реальное использование пространства файла (выделенный размер) внутри python?То stat вызов возвращает видимый размер файла, и я понятия не имею, как еще получить реальное использование, кроме как прочитать весь файл целиком (он может стать довольно большим).

>>> os.stat('testfile').st_size
1024000
Это было полезно?

Решение

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

Тадаа :)

st_blocks это количество 512-байтовых блоков, фактически выделенных файлу.Обратите внимание, что st_blocks не гарантируется, что он присутствует во всех операционных системах, но те, которые поддерживают разреженные файлы, как правило, поддерживают.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top