2024-04-26 19:15:28 发布
网友
我想创建一个特定大小的文件(比如,1GiB)。 内容并不重要,因为我会把东西填进去。
我要做的是:
f = open("E:\\sample", "wb") size = 1073741824 # bytes in 1 GiB f.write("\0" * size)
但这需要很长时间才能完成。我花了大约1分钟。 我们可以做些什么来改善这一点?
这个问题以前一直是answered。不确定该解决方案是否是跨平台的,但它在Windows(NTFS文件系统)中完美地工作。
with open("file.to.create", "wb") as out: out.truncate(1024 * 1024 * 1024)
This answer使用seek和write:
seek
write
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兼容性。
b
f.write("\0")
这个问题以前一直是answered。不确定该解决方案是否是跨平台的,但它在Windows(NTFS文件系统)中完美地工作。
This answer使用
seek
和write
:警告此解决方案提供的结果可能出乎您的意料。见UPD。。。
1创建新文件。
2查找大小为1字节。
3写入1字节。
4利润:)
升级版: 在我的系统(Linux+ReiserFS)上查找和截断创建稀疏文件。它们可以根据需要调整大小,但实际上不会占用存储设备上的空间。因此,这不是快速空间分配的正确解决方案。我刚刚创建了100Gib文件,只有25Gib空闲,结果仍然有25Gib空闲。
小更新: 添加了
b
前缀到f.write("\0")
以实现Py3兼容性。相关问题 更多 >
编程相关推荐