2010-07-31 28 views
5

我需要创建不包含数据的任意大小的文件。这可能相当大。虽然我可以循环并写入一个空字符,直到达到文件大小,这看起来很难看。如何高效地填充python中的空数据文件?

with open(filename,'wb') as f: 
    # what goes here? 

什么是有效的,pythonic的方式来做到这一点?

回答

16

您可以寻找一个特定的位置并写入一个字节,操作系统会奇迹般地让文件的其余部分出现。

with open(filename, "wb") as f: 
    f.seek(999999) 
    f.write("\0") 

您需要编写至少一个字节才能工作。

+0

而文件系统需要支持稀疏文件 – 2010-07-31 11:58:32

+2

如果文件系统不支持稀疏文件;在这种情况下,操作系统将创建一个等效大小的非稀疏文件。 – 2010-07-31 12:02:07

+0

是的,当然,我出于某种原因想象了一个稀疏文件:) – 2010-07-31 12:05:05

8
with open('zero', 'w') as f: 
    f.seek(999999999) 
    f.write('\0') 

如果操作系统支持它,将创建一个sparse file。神奇的是,这种方式创建的文件不占用任何空间(直到你将它复制到其他地方的程序不保留漏洞)

相关问题