File holes in Linux

Christian Heimes lists at cheimes.de
Wed Sep 29 16:32:05 EDT 2010


Am 29.09.2010 11:05, schrieb Tom Potts:
> A quick `ls -sl filehole.test' will show that the created file actually
> takes up about 980k, rather than the 0 bytes expected.
> 
> If anyone can let me know if this is indeed a bug or feature request, how to
> get around it, or where to take it next, I'd really appreciate it.

It's not a bug in Python. You simply misunderstand how sparse files are
created. When you write null bytes to a file each null byte takes up
space on the file system, too. In order to create a hole, you have to
set the file handler's position beyond the file's end.

>>> with open("sparse", "w") as fh:
...     fh.seek(1000**3)
...     fh.write("data")
...

$  ls -l --si sparse
-rw-r--r-- 1 heimes heimes 1,1G 2010-09-29 22:25 sparse
$ ls -s sparse
4 sparse
$ du sparse
4       sparse

Christian




More information about the Python-list mailing list