Как мне сгенерировать файл .txt, заполненный произвольными числами, при этом он должен весить ровно 1 гигабайт?

from random import randrange

with open("input.txt", "w") as file:
    print(randrange(-100,100), file=file)

Написал пока только это, оно записывает только 1 значение


Ответы (1 шт):

Автор решения: MBo

Один из способов - вывод строк, сформатированных до заданной длины. В текстовых файлах Windows конец строки занимает два байта, поэтому я сделал ширину 6.

with open("f:\input.txt", "w") as file:
    for i in range(1024 // 8):
        print("{0:>6}".format(randrange(-100,100)), file=file)

А чтобы не было пустого места, можно суммировать длины сгенерированных строк, пока не дойдёт до нужной длины, и в конце докинуть строку пробелов нужной длины.

size = 0
with open("f:\input.txt", "w") as file:
    while True:
        s = str(randrange(-100,100))
        if size + len(s) + 2 < 1024:
            print(s, file=file)
            size += len(s) + 2
        else:
            print(' '*(1024 - size), file=file, end = '')
            break
→ Ссылка