Мониторинг содержимого файлов / каталогов?

Я ищу пакет Python для кросс-платформенного мониторинга файлов? Я знаю, что можно отслеживать файлы в Windows с помощью pywin32, и есть пакеты, работающие в Linux / Unix, но знает ли кто-нибудь о кроссплатформенном?


person dahpgjgamgan    schedule 28.02.2009    source источник
comment
У Тима Голдена есть очень простой кроссплатформенный метод опроса каталога с помощью os.listdir здесь: timgolden.me.uk/python/win32_how_do_i/   -  person mechanical_meat    schedule 28.02.2009
comment
Что означает монитор? Сообщите, пожалуйста, о том, что вы пытаетесь сделать.   -  person S.Lott    schedule 28.02.2009


Ответы (5)


Для систем на базе Unix / Linux следует использовать привязки Python монитора изменения файлов к libfam.

Для систем на базе Windows вам следует подключиться к Win32 API FindFirstChangeNotification и сопутствующие функции.

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

person Brian R. Bondy    schedule 28.02.2009
comment
Не могли бы вы объяснить, как использовать W32 API на примере ... потому что я этого не понимаю ... - person wishi; 26.10.2010

Я работаю над лицензированной MIT библиотекой, которая помогает программам Python отслеживать события файловой системы с максимальной переносимостью. Есть различия, которые я пытаюсь сгладить. На данный момент альфа-версия:

Проверьте это здесь: http://github.com/gorakhargosh/watchdog/

Патчи и вклады приветствуются.

Надеюсь, поможет. =) Ура.

person GoraKhargosh    schedule 19.11.2010
comment
Большое спасибо, я искал кроссплатформенное решение, и сторожевой таймер действительно полезен! - person mtrovo; 17.10.2011
comment
Когда это будет доступно для python3? - person avendael; 06.10.2012
comment
@avendael - Теперь, видимо. На данный момент он поддерживает py3k. - person Fake Name; 30.04.2014
comment
Это определенно ответ, который нужно принять. Работает как шарм :) Вот пример использования сторожевого пса: pythonhosted.org/watchdog/quickstart.html - person swdev; 01.12.2014
comment
Это пока активно? - person DonyorM; 28.01.2016
comment
Сразу хочу сказать, что проект все еще активно развивается и выглядит довольно круто. Спасибо! - person Johndt; 03.11.2016
comment
документы ужасны, совсем не помогают ... просто говорю ... Пример: "описание аргумента шаблонов: (только для чтения) Шаблоны, позволяющие сопоставить пути событий.", ох, это действительно описательно - person Dawid Gosławski; 14.11.2016
comment
Последнее обновление было три года назад. Должен ли я по-прежнему использовать эту библиотеку или выбрать что-то вроде watchgod? - person Marcus Mann; 02.07.2018

Я нашел ссылку, в которой рассказывается о вашей проблеме. Хотя на самом деле он не предоставляет решения / библиотеки, я думаю, что это поможет. http://www.stepthreeprofit.com/2008/06/cross-platform-monitoring-of-filesystem.html

Я не думаю, что есть кроссплатформенный, так что вы можете попробовать свои собственные.

У меня нет опыта в этой области, поэтому я не совсем уверен. Надеюсь, это поможет.

Примечание. Я исправлюсь, gamin доступен на cygwin, как указал мне Адам Бернье в комментарии. Возможно, вы захотите изучить другие варианты на cygwin (если они существуют).

person batbrat    schedule 28.02.2009
comment
Кажется, хороший отзыв для Гамина в Linux. FWIW, Gamin указан в пакетах cygwin: cygwin.com/packages - person mechanical_meat; 28.02.2009
comment
Ах! cygwin! Я не думал об этом. Я исправился. - person batbrat; 28.02.2009

Также обратите внимание на этот вариант:

http://pypi.python.org/pypi/watchdog

Использовался с кроссплатформенным приложением в Windows и OS X.

person reese.ch    schedule 06.09.2011
comment
Возможно, потому, что автор watchdog написал об этом в ответе годом ранее, а в этом ответе не так много? Вероятно, не стоит и отрицательного голоса, но и положительного голоса тоже не стоит. - person fencepost; 23.12.2011
comment
Мне это нравится, потому что он сказал, что использовал это, и это нормально. - person Pedro; 30.10.2012
comment
Я никогда не понимаю, почему ответ был отклонен. Вот пример использования сторожевого пса: pythonhosted.org/watchdog/quickstart.html - person swdev; 01.12.2014

Самый простой способ в Linux - использовать inotifywait (при условии, что у вас достаточно новое ядро). Вам не нужны никакие специальные привязки, inotifywait можно настроить для вывода строк вывода на стандартный вывод любым способом. Посмотрите и этот вопрос станет хорошим примером.

person JesperE    schedule 14.05.2009
comment
Он особо упомянул кроссплатформенность. inotifywait только для Linux - person Quintin Par; 05.01.2010