0

Создание файла заданного размера в Python

12

Проблема с созданием файла заданного размера в Python

Я пытаюсь создать файл определенного размера (например, 1 ГиБ). Содержание файла не важно, так как я заполню его данными позже.

Вот что я делаю:

f = open("E:\\sample", "wb")
size = 1073741824 # байты в 1 ГиБ
f.write("\0" * size)

Однако это занимает слишком много времени. Весь процесс занимает примерно 1 минуту.

Что можно сделать, чтобы улучшить скорость создания файла?

1 ответ(ов)

0

ВНИМАНИЕ Данное решение может привести к результату, который вы не ожидаете. См. UPD ...

  1. Создайте новый файл.

  2. Переместитесь к байту с индексом size-1.

  3. Запишите 1 байт.

  4. Профит 😃

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.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь