create file of particular size in python

前端 未结 2 954
余生分开走
余生分开走 2020-12-04 23:52

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(\"         


        
相关标签:
2条回答
  • 2020-12-05 00:29

    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.

    0 讨论(0)
  • 2020-12-05 00:31

    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')
    
    0 讨论(0)
提交回复
热议问题