用python创建特定大小的文件

2024-04-26 19:15:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个特定大小的文件(比如,1GiB)。 内容并不重要,因为我会把东西填进去。

我要做的是:

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

但这需要很长时间才能完成。我花了大约1分钟。 我们可以做些什么来改善这一点?


Tags: 文件samplein内容sizebytesopenwrite
2条回答

这个问题以前一直是answered。不确定该解决方案是否是跨平台的,但它在Windows(NTFS文件系统)中完美地工作。

with open("file.to.create", "wb") as out:
    out.truncate(1024 * 1024 * 1024)

This answer使用seekwrite

with open("file.to.create", "wb") as out:
    out.seek((1024 * 1024 * 1024) - 1)
    out.write('\0')

警告此解决方案提供的结果可能出乎您的意料。见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

升级版: 在我的系统(Linux+ReiserFS)上查找和截断创建稀疏文件。它们可以根据需要调整大小,但实际上不会占用存储设备上的空间。因此,这不是快速空间分配的正确解决方案。我刚刚创建了100Gib文件,只有25Gib空闲,结果仍然有25Gib空闲。

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

相关问题 更多 >