stat
と呼ばれる結果の非表示のメンバーが必要ですst_blocks
。
>>> s = os.stat('some_file')
>>> s
posix.stat_result(st_mode=33261, st_ino=12583347, st_dev=234881026,
st_nlink=1, st_uid=1000, st_gid=20, st_size=9889973,
st_atime=1301371810, st_mtime=847731600, st_ctime=1301371422)
>>> s.st_size / 1e6 # size of data fork only, in MB
9.889973
>>> x.st_blocks * 512e-6 # total size on disk, in MB
20.758528
問題のファイルのリソースフォークには約10MBがあり、これはstat
「非表示」属性の結果に表示されます。(これがどのファイルであるかを正確に知っている人にはボーナスポイントがあります。)属性は常に512バイトの増分を測定することが文書化されman 2 stat
ていることに注意してください。st_blocks
注: st_size
データのバイト数を測定しますがst_blocks
、部分的に使用されているブロックからのオーバーヘッドを含むディスク上のサイズを測定します。それで、
>>> open('file.txt', 'w').write('Hello, world!')
13
>>> s = os.stat('file.txt')
>>> s.st_size
13
>>> s.st_blocks * 512
4096
Finderで「情報を見る」を実行すると、ファイルに次の情報が含まれていることがわかります。
サイズ:ディスク上で4 KB(13バイト)