Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

create file of particular size in python

Tags:

python

file

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("E:\\sample", "wb") size = 1073741824 # bytes in 1 GiB f.write("\0" * size) 

But this takes too long to finish. It spends me roughly 1 minute. What can be done to improve this?

like image 414
onemach Avatar asked Jan 11 '12 08:01

onemach


People also ask

How do I create a specific size in Python?

To create a file of a particular size, just seek to the byte number(size) you want to create the file of and write a byte there.

How do you create a file in Python?

Create a Python fileIn the Project tool window, select the project root (typically, it is the root node in the project tree), right-click it, and select File | New .... Select the option Python File from the context menu, and then type the new filename. PyCharm creates a new Python file and opens it for editing.


1 Answers

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.

like image 182
Shamanu4 Avatar answered Sep 17 '22 21:09

Shamanu4