Контекст:
В настоящее время у меня есть программа, которая загружает набор плагинов из их путей к файлам (на подключенном сетевом диске), используя метод, показанный в другом потоке SO. а>. Эти плагины предназначены для непрерывного выпуска, а это значит, что мне нужен постоянный доступ для их написания. Текущий механизм блокирует файлы, поэтому я должен попросить всех закрыть программу, чтобы я мог обновить файлы.
Вопрос:
Мне было интересно, есть ли способ, возможно, используя метод, аналогичный указанному выше, импортировать файл из объекта io.BytesIO
необработанного содержимого плагина (следовательно, разблокировать файл, чтобы я мог вносить изменения по своему усмотрению).
В более общем плане:
В частности, могу ли я хранить необработанное содержимое модуля в памяти, не касаясь физического диска? Если это невозможно, есть ли способ полностью загрузить эти модули в память, чтобы затем разблокировать импортируемые файлы?
Как я уже говорил в своем комментарии, я понимаю, что вы можете смонтировать виртуальную файловую систему в ОС на базе Linux (что могло бы решить мою проблему), хотя, к сожалению, я разрабатываю для Windows, и Microsoft никогда не сможет облегчить вашу жизнь! :-)
Примечание.
Я не спрашиваю, где я могу скопировать эти файлы, чтобы импортировать их из локальной версии (например, temp, cache и т. д.).
Я понимаю, что это довольно специализированный вопрос, поэтому любая помощь очень ценится.
BytesIO
, поэтому, хотя я не уменьшаю нагрузку на чтение и запись на диске, я просто оставляю файлы открытыми в течение минимального времени (с количеством пользователей , у меня статистически никогда не будет проблем) - person Minion Jim   schedule 13.04.2020tempfile.SpooledTemporaryFile
иio.StringIO
. Или, может быть, со сторонней библиотекой, например, я случайно наткнулся на memory-tempfileа>. - person sinoroc   schedule 13.04.2020tempfile.SpooledTemporaryFile
мне пришлось бы записать его на диск, прежде чем его можно будет импортировать) - person Minion Jim   schedule 13.04.2020importlib
(или более низких уровней) действительно нуждается в файле в файловой системе. Или определите, почему файлы не освобождаются после импорта в кэш модуля Python. Или, может быть, переосмыслить все это и принять, что запись чего-то в локальной файловой системе может быть приемлемым компромиссом. - person sinoroc   schedule 13.04.2020