Можно ли заставить PyFilesystem сделать файловые системы одиночными? - PullRequest
1 голос
/ 09 марта 2019

Я использую PyFilesystem . Код, который я тестирую, создает файловую систему по умолчанию, используя open_fs(file_url). Когда я тестирую этот код, я могу передать mem://filepath/filename, чтобы запустить тест с использованием файловой системы памяти.

Однако для тестирования мне нужно заполнить файловую систему памяти моим тестовым файлом. Есть ли способ для меня навязать глобальный единый элемент на файловых системах? Я надеюсь, что когда open_fs будет запущен в коде, который я не контролирую, он откроет ту же файловую систему, которую я ранее создал и добавил в мой тестовый файл.

1 Ответ

1 голос
/ 09 марта 2019

Автор 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 столько времени, сколько это необходимо, что я обычно рекомендую.

...