создать файл определенного размера в python
Я хочу создать файл определенного размера (скажем, 1GiB). Содержание не важно, так как я заполню материал.
То, что я делаю, это:
f = open("E:\\sample", "wb")
size = 1073741824 # bytes in 1 GiB
f.write("\0" * size)
Но это заканчивается слишком долго. Он проводит меня примерно 1 минуту. Что можно сделать, чтобы улучшить это?
Ответы
Ответ 1
ПРЕДУПРЕЖДЕНИЕ Это решение дает результат, которого вы, возможно, не ожидаете. Смотрите UPD...
1 Создайте новый файл.
2 ищите размер-1 байт.
3 напишите 1 байт.
4 прибыли :)
f = open('newfile',"wb")
f.seek(1073741824-1)
f.write("\0")
f.close()
import os
os.stat("newfile").st_size
1073741824
UPD: Ищите и усекайте и создавайте разреженные файлы в моей системе (Linux + ReiserFS). Они имеют размер по мере необходимости, но на самом деле не занимают места на устройстве хранения. Таким образом, это не может быть правильным решением для быстрого распределения пространства. Я только что создал файл 100Gib, имеющий только 25Gib бесплатно и все еще имею 25Gib бесплатно в результате.
Ответ 2
На этот вопрос был дан ответ. Не уверен, является ли решение кросс-платформой, но оно работает в Windows (файловая система NTFS) безупречно.
with open("file.to.create", "wb") as out:
out.truncate(1024 * 1024 * 1024)
Этот ответ использует seek
и write
:
with open("file.to.create", "wb") as out:
out.seek((1024 * 1024 * 1024) - 1)
out.write('\0')