Создание файла заданного размера в Python
Проблема с созданием файла заданного размера в Python
Я пытаюсь создать файл определенного размера (например, 1 ГиБ). Содержание файла не важно, так как я заполню его данными позже.
Вот что я делаю:
f = open("E:\\sample", "wb")
size = 1073741824 # байты в 1 ГиБ
f.write("\0" * size)
Однако это занимает слишком много времени. Весь процесс занимает примерно 1 минуту.
Что можно сделать, чтобы улучшить скорость создания файла?
1 ответ(ов)
ВНИМАНИЕ Данное решение может привести к результату, который вы не ожидаете. См. UPD ...
Создайте новый файл.
Переместитесь к байту с индексом size-1.
Запишите 1 байт.
Профит 😃
f = open('newfile', "wb")
f.seek(1073741824 - 1)
f.write(b"\0")
f.close()
import os
os.stat("newfile").st_size
1073741824
UPD: Использование seek
и truncate
создает разреженные файлы на моей системе (Linux + ReiserFS). Они имеют нужный размер, но на самом деле не занимают место на накопителе. Поэтому это не является корректным решением для быстрого выделения дискового пространства. Я только что создал файл на 100 ГБ, имея всего 25 ГБ свободного места, и при этом в результате по-прежнему имею 25 ГБ свободного места.
Небольшое обновление: Добавил префикс b
к f.write("\0")
для совместимости с Python 3.
Как читать файл построчно в список?
Как получить даты/времена создания и изменения файла?
Как удалить не пустую папку?
Как удалить содержимое папки?
Как вызвать функцию из другого .py файла?