Как эффективно заполнить файл нулевыми данными из python? - PullRequest
5 голосов
/ 31 июля 2010

Мне нужно создать файлы произвольного размера, которые не содержат данных.Потенциально довольно большие.Хотя я мог бы просто пройтись по циклу и написать один нулевой символ, пока не достигну размера файла, это кажется уродливым.

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

Какой эффективный, питонный способ сделать это?

Ответы [ 2 ]

18 голосов
/ 31 июля 2010

Вы можете искать в определенной позиции и записать байт, и ОС волшебным образом заставит остальную часть файла появиться.

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

Вам нужно написать хотя бы один байт, чтобы это работало.

8 голосов
/ 31 июля 2010
with open('zero', 'w') as f:
    f.seek(999999999)
    f.write('\0')

Создает разреженный файл , если ОС поддерживает его. Волшебство в том, что файлы, созданные таким образом, не занимают места (пока вы не скопируете их в другое место с помощью программы, которая не сохраняет дыры)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...