I want to create a file of particular size (say, 1GiB). The content is not important since I will fill stuff into it.
What I am doing is:
f = open(\"
WARNING This solution gives the result that you might not expect. See UPD ...
1 Create new file.
2 seek to size-1 byte.
3 write 1 byte.
4 profit :)
f = open('newfile',"wb")
f.seek(1073741824-1)
f.write(b"\0")
f.close()
import os
os.stat("newfile").st_size
1073741824
UPD: Seek and truncate both create sparse files on my system (Linux + ReiserFS). They have size as needed but don't consume space on storage device in fact. So this can not be proper solution for fast space allocation. I have just created 100Gib file having only 25Gib free and still have 25Gib free in result.
Minor Update:
Added b
prefix to f.write("\0")
for Py3 compatibility.
The question has been answered before. Not sure whether the solution is cross platform, but it works in Windows (NTFS file system) flawlessly.
with open("file.to.create", "wb") as out:
out.truncate(1024 * 1024 * 1024)
This answer uses seek
and write
:
with open("file.to.create", "wb") as out:
out.seek((1024 * 1024 * 1024) - 1)
out.write('\0')