12

私は次のようにPythonでスパースファイルを作成しています:

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

ファイルが完成すると、ディスク容量は0になりますが、iノードサイズは切り捨てられた値(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
4

1 に答える 1

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

タダー:)

st_blocksファイルに実際に割り当てられた512バイトのブロックの数です。st_blocksすべてのオペレーティングシステムに存在することが保証されているわけではありませんが、スパースファイルをサポートするオペレーティングシステムは一般的に存在することに注意してください。

于 2010-07-09T11:20:05.997 に答える