Можно ли заставить PyFilesystem сделать файловые системы одиночными?
Я использую PyFilesystem. Код, который я тестирую, создает файловую систему по умолчанию, используя open_fs(file_url)
, Когда я тестирую этот код, я могу передать mem://filepath/filename
запустить тест с использованием файловой системы памяти.
Однако для тестирования мне нужно заполнить файловую систему памяти моим тестовым файлом. Есть ли способ для меня навязать глобальный единый элемент на файловых системах? Я надеюсь, что когда open_fs
запускается в коде, который я не контролирую, он откроет ту же файловую систему, которую я ранее создал и добавил в мой тестовый файл.
1 ответ
Автор PyFilesystem здесь. Краткий ответ - нет, в случае файловых систем памяти, когда вы закрываете объект FS, память отбрасывается. Файловые системы сохранятся, только если основной механизм хранения будет постоянным.
Немного более длинный ответ будет то, что вы можете использовать подкаталоги TempFS для создания постоянных файловых систем.
# Create a temporary filesystem at module scope
temp_fs = open_fs('temp://')
# Acquire new persistent temporary directory
# (this is just a path you can pass to open_fs)
# If you open this multiple times, the data will persist
new_dir = temp_fs.makedir('foo').getsyspath()
# Close temporary filesystem, to delete all directories
temp_fs.close()
Это должно дать вам семантику, которую вы описываете.
Если используемый вами проект открывает и закрывает файловые системы с помощью URL-адреса FS и все еще ожидает, что данные будут там, тогда он порвет с файловыми системами, которые не поддерживаются постоянным хранилищем. Возможно, вы можете предложить авторам, чтобы они хранили объект FS столько времени, сколько это необходимо, что я обычно рекомендую.