Daniel Von Fange
Daniel Von Fange

Reputation: 6071

How do I efficiently fill a file with null data from python?

I need to create files of arbitrary size that contain no data. The are potentially quite large. While I could just loop through and write a single null character until I've reached the file size, that seems ugly.

with open(filename,'wb') as f:
   # what goes here?

What is the efficient, pythonic way to do this?

Upvotes: 6

Views: 6918

Answers (2)

Marco Mariani
Marco Mariani

Reputation: 13766

with open('zero', 'w') as f:
    f.seek(999999999)
    f.write('\0')

Will create a sparse file if the OS supports it. The magic is that files created this way do not take any space (until you copy it elsewhere with a program that does not preserve holes)

Upvotes: 8

Greg Hewgill
Greg Hewgill

Reputation: 993393

You can seek to a specific position and write a byte, and the OS will magically make the rest of the file appear.

with open(filename, "wb") as f:
    f.seek(999999)
    f.write("\0")

You need to write at least one byte for this to work.

Upvotes: 19

Related Questions