我想创建一个特定大小的文件(比如1GiB).内容并不重要,因为我会填写内容.
我在做的是:
f = open("E:\\sample", "wb")
size = 1073741824 # bytes in 1 GiB
f.write("\0" * size)
Run Code Online (Sandbox Code Playgroud)
但这需要很长时间才能完成.它花了我大约1分钟.可以做些什么来改善这个?
Sha*_*nu4 39
警告此解决方案提供您可能不期望的结果.见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
Run Code Online (Sandbox Code Playgroud)
UPD: 在我的系统上查找并截断两者都创建稀疏文件(Linux + ReiserFS).它们具有所需的大小但实际上不占用存储设备上的空间.因此,这不适合快速空间分配.我刚创建了只有25Gib的100Gib文件,结果仍然有25Gib免费.
次要更新:为Py3兼容性
添加了b前缀f.write("\0").
Imr*_*ran 27
之前已回答过这个问题.不确定该解决方案是否是跨平台的,但它可以在Windows(NTFS文件系统)中完美运行.
with open("file.to.create", "wb") as out:
out.truncate(1024 * 1024 * 1024)
Run Code Online (Sandbox Code Playgroud)
这个答案使用seek和write:
with open("file.to.create", "wb") as out:
out.seek((1024 * 1024 * 1024) - 1)
out.write('\0')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30949 次 |
| 最近记录: |