Я ищу пакет Python для кросс-платформенного мониторинга файлов? Я знаю, что можно отслеживать файлы в Windows с помощью pywin32, и есть пакеты, работающие в Linux / Unix, но знает ли кто-нибудь о кроссплатформенном?
Мониторинг содержимого файлов / каталогов?
Ответы (5)
Для систем на базе Unix / Linux следует использовать привязки Python монитора изменения файлов к libfam.
Для систем на базе Windows вам следует подключиться к Win32 API FindFirstChangeNotification
и сопутствующие функции.
Что касается кроссплатформенного способа, я не знаю хорошего кросс-платформенного способа. Я думаю, что было бы лучше создать модуль самостоятельно, который будет работать на любой ОС, использующей один из двух вышеупомянутых методов, после определения того, что это за ОС.
Я работаю над лицензированной MIT библиотекой, которая помогает программам Python отслеживать события файловой системы с максимальной переносимостью. Есть различия, которые я пытаюсь сгладить. На данный момент альфа-версия:
Проверьте это здесь: http://github.com/gorakhargosh/watchdog/
Патчи и вклады приветствуются.
Надеюсь, поможет. =) Ура.
watchgod
?
- person Marcus Mann; 02.07.2018
Я нашел ссылку, в которой рассказывается о вашей проблеме. Хотя на самом деле он не предоставляет решения / библиотеки, я думаю, что это поможет. http://www.stepthreeprofit.com/2008/06/cross-platform-monitoring-of-filesystem.html
Я не думаю, что есть кроссплатформенный, так что вы можете попробовать свои собственные.
У меня нет опыта в этой области, поэтому я не совсем уверен. Надеюсь, это поможет.
Примечание. Я исправлюсь, gamin доступен на cygwin, как указал мне Адам Бернье в комментарии. Возможно, вы захотите изучить другие варианты на cygwin (если они существуют).
Также обратите внимание на этот вариант:
http://pypi.python.org/pypi/watchdog
Использовался с кроссплатформенным приложением в Windows и OS X.
Самый простой способ в Linux - использовать inotifywait (при условии, что у вас достаточно новое ядро). Вам не нужны никакие специальные привязки, inotifywait можно настроить для вывода строк вывода на стандартный вывод любым способом. Посмотрите и этот вопрос станет хорошим примером.