【问题标题】:sparse file usage in pythonpython中的稀疏文件使用
【发布时间】:2011-03-13 19:46:43
【问题描述】:

我在 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

【问题讨论】:

  • 附带说明,如果您使用 python 的 shutil 模块复制稀疏文件,这将不起作用,因为 shutil 不支持稀疏文件。

标签: python macos file filesize sparse-file


【解决方案1】:
>>> os.stat('testfile').st_blocks*512
0

多多 :)

st_blocks 是实际分配给文件的 512 字节块的数量。请注意,st_blocks 不能保证出现在所有操作系统中,但支持稀疏文件的操作系统通常会出现。

【讨论】:

  • st_blksize 提供文件系统的实际块大小。一般来说,它不必是 512 字节。
  • 我一时糊涂了,但事实并非如此。 st_blksize 是“首选”文件系统块大小。 st_blocks 保证为 512 字节的块(参见手册页)。
  • 这个特殊的解决方案今天早上可以工作,但是在我更换服务器机器后它突然停止工作。你对此有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 2014-10-03
  • 2023-03-08
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
相关资源
最近更新 更多