小编典典

在python中创建特定大小的文件

python

我想创建一个特定大小的文件(例如1GiB)。内容并不重要,因为我会在其中填充内容。

我正在做的是:

f = open("E:\\sample", "wb")
size = 1073741824 # bytes in 1 GiB
f.write("\0" * size)

但这需要太长时间才能完成。我花了大约1分钟的时间。有什么可以改善的呢?


阅读 221

收藏
2020-12-20

共1个答案

小编典典

警告 此解决方案将提供您可能无法预期的结果。参见UPD …

1创建新文件。

2寻求1个字节的大小。

3写1个字节。

4利润:)

f = open('newfile',"wb")
f.seek(1073741824-1)
f.write(b"\0")
f.close()
import os
os.stat("newfile").st_size

1073741824

UPD: 查找和截断都在我的系统(Linux +
ReiserFS)上创建稀疏文件。它们具有所需的大小,但实际上不占用存储设备上的空间。因此,这不是快速分配空间的正确解决方案。我刚刚创建了100Gib文件,其中只有25Gib免费,结果仍然有25Gib免费。

次要更新: 添加b前缀以f.write("\0")实现Py3兼容性。

2020-12-20