Python中的稀疏文件使用

13 投票
1 回答
5505 浏览
提问于 2025-04-16 01:02

我正在用Python创建稀疏文件,方法如下:

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

当文件创建完成后,它在磁盘上占用的空间是0,但它的inode大小被设置为我指定的值(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

1 个回答

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

太棒了 :)

st_blocks 是指实际分配给文件的 512 字节块的数量。需要注意的是,并不是所有操作系统都一定会有 st_blocks 这个信息,但支持稀疏文件的系统通常都会有这个信息。

撰写回答