Самый быстрый способ создания поддельных файлов с заданным размером файла

Я ищу самый быстрый способ создания поддельных файлов для стресс-теста, где есть возможность передать размер файла. В настоящее время я использую простой

with open("{}".format(i), 'wb') as f: f.write(os.urandom(FILE_SIZE))

но в моем случае создание каждого файла занимает слишком много времени. Мне кажется, что в библиотеке Faker нет метода генерации поддельных файлов

EDIT: Приведенный ниже код является лишь частью всего скрипта, поэтому любые команды CMD/OS не являются решением моей проблемы.


person Radosław Hryniewicki    schedule 30.05.2019    source источник
comment
@ Radosław Hryniewicki дубликат: stackoverflow. ком/вопросы/8816059/   -  person Zaraki Kenpachi    schedule 30.05.2019
comment
Не совсем так. Я ищу более быстрое решение для записи файлов без запасных частей на диск, если он существует. В теме вы упоминаете, что @Shamanu4 опубликовал ответы, которые не решают мою проблему. Я должен действительно записать что-то в файлы с заданным размером файла   -  person Radosław Hryniewicki    schedule 31.05.2019


Ответы (2)


Вы можете выполнить приведенную ниже команду, чтобы получить команду с объяснением, а затем запустить ту же команду в цикле for.

Как создать файл с ЛЮБЫМ заданным размером в Линукс?

person Garry    schedule 30.05.2019

Не лучше ли использовать для этого команды ОС?

dd if=/dev/urandom of=/tmp/x bs=1M count=1

Вы можете начать это с помощью модуля subprocess:

subprocess.check_call("dd if=/dev/urandom of=/tmp/y bs=1M count=1".split(" "))
person Marcin Pietraszek    schedule 30.05.2019
comment
Нет, потому что фрагмент, который я вставляю, является лишь частью всей программы. Внутри моего сценария есть множество условий и исключений, которые не могут быть обработаны простой командой ОС. - person Radosław Hryniewicki; 30.05.2019
comment
Почему эту команду нельзя назвать так subprocess.check_call('dd if=/dev/urandom of=/tmp/y bs=1M count=1'.split(' '))? - person Marcin Pietraszek; 30.05.2019