Создание больших случайных файлов содержимого в Python
Я работаю над характеристикой накопителя SSD, чтобы определить максимальную TBW / ожидаемую продолжительность жизни.
В настоящее время я использую BASH для генерации 500 МБ файлов со случайным (ненулевым) содержимым:
dd if=<(openssl enc -aes-128-cbc -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero) of=/media/m2_adv3d/abc${stamp1} bs=1MB count=500 iflag=fullblock&
Note : {stamp1} is a time stamp for ensuring unique file names.
Я пытаюсь достичь того же результата в Python, но не нахожу эффективных способов сделать это (быстро сгенерировать файл).
Ищу предложения.
Спасибо!
Обновить
Я экспериментировал со следующим и, кажется, достиг 2-х секундной записи; файлы выглядят случайными и разными:
import os
newfile = open("testfile.001", "a")
newfile.write (os.urandom(500000000)) # generate 500MB random content file
newfile.close ()
Немного скептически отношусь к тому, что это действительно хорошо, чтобы подчеркнуть SSD. В основном это будет бесконечный цикл; когда диск заполнен, удаление старого файла и запись нового, а также сбор SMART-данных каждые 500 файлов, записанных для отслеживания старения.
Мысли?
Спасибо,
Дан.
1 ответ
Опция os.urandom лучше всего подходит для создания больших случайных файлов.
Вы можете попробовать что-то так просто, как это.
import pandas as pd
import numpy as np
rows = 100000
cols = 10000
table_size = [rows,cols]
x = np.ones(table_size)
pd.DataFrame(x).to_csv(path)
Вы можете обновить размер таблицы, чтобы она была больше или меньше. Я не уверен, что это более / менее эффективно, чем то, что вы уже пытаетесь.