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

Как создать ramdisk в Python?

Я хочу создать ramdisk в Python. Я хочу иметь возможность сделать это кросс-платформенным способом, поэтому он будет работать на Windows XP-to-7, Mac и Linux. Я хочу иметь возможность читать/записывать в ramdisk, как обычный диск, желательно с буквой/дорожкой диска.

Причина, по которой я хочу это, - написать тесты для script, который создает каталог с определенной структурой. Я хочу полностью создать каталог в ramdisk, поэтому я буду уверен, что он будет полностью удален после завершения тестов. Я рассматривал использование Python tempfile, но если тест будет остановлен в середине, каталог не может быть удален. Я хочу быть уверенным, что он удалился, даже если кто-то вытащил вилку на компьютер в середине теста.

4b9b3361

Ответ 2

Поскольку обработка файлов и каталогов настолько низка и зависит от ОС, я сомневаюсь, что все, что вы хотите, существует (или даже возможно). Лучше всего будет реализовать "виртуальный" набор функций, классов и методов, подобный файловой системе, который отслеживает созданные файлы и иерархию каталогов и их контент.

Вызываемые в такой эмуляции должны иметь одну и ту же подпись и возвращать одинаковые значения в качестве своих копий в различные стандартные встроенные модули Python и модули, которые использует ваше приложение.

Я подозреваю, что это может быть не так много, как кажется - эмуляция стандартного интерфейса файловой системы Python - в зависимости от того, сколько из них вы используете, поскольку вам не обязательно будет имитировать все это, Кроме того, если он написан на Pure Python ™, он также будет переносимым и простым в обслуживании и улучшении.

Ответ 3

Один из вариантов может заключаться в модификации модифицированных версий методов, используемых в модуле os, а также встроенных open и file, которые записывают файлы StringIO вместо диска. Очевидно, что эта замена должна выполняться только для тестируемого модуля;

Ответ 4

Прочтите это:

http://docs.python.org/library/tempfile.html#tempfile.TemporaryFile

"Возвращает файл-подобный объект, который может быть используется как область временного хранения. файл создается с помощью mkstemp(). Это будут уничтожены, как только закрыто (включая неявное закрытие когда объект является мусором собраны)".

Все это для вас. Ничего не делайте, и он уже работает.