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.