Подтвердить что ты не робот

создать файл определенного размера в python

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

То, что я делаю, это:

f = open("E:\\sample", "wb")
size = 1073741824 # bytes in 1 GiB
f.write("\0" * size)

Но это заканчивается слишком долго. Он проводит меня примерно 1 минуту. Что можно сделать, чтобы улучшить это?

4b9b3361

Ответ 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')