Как я могу "посмотреть" файл для изменения/изменения?
Я хочу вызвать мой браузер chrome
или firefox
, когда файл, указанный мной, будет изменен. Как я могу "посмотреть" этот файл, чтобы что-то сделать, когда он изменился?
Программно, кажется, шаги... в основном устанавливают бесконечный интервал каждую секунду или около того и кэшируют начальную дату модификации, а затем сравнивают дату каждую секунду, когда она меняет вызов X.
Ответы
Ответ 1
Как уже отмечалось, вы можете использовать pyinotify:
например:.
import webbrowser
import pyinotify
class ModHandler(pyinotify.ProcessEvent):
# evt has useful properties, including pathname
def process_IN_CLOSE_WRITE(self, evt):
webbrowser.open(URL)
handler = ModHandler()
wm = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch(FILE, pyinotify.IN_CLOSE_WRITE)
notifier.loop()
Это более эффективно, чем опрос. Ядро сообщает вам, когда оно выполняет операцию, без необходимости постоянно спрашивать.
Ответ 2
В ядре Linux есть API мониторинга файлов, называемый inotify. Связывание с python pyinotify.
С его помощью вы можете создавать то, что хотите.
Ответ 3
Установите инструменты inotify и напишите простую оболочку script, чтобы посмотреть файл.
Ответ 4
Другой вариант - использовать контрольную сумму. Вы можете использовать шаблон, похожий на нос nosy.py. Я использую один из dingus, чтобы проверить мой каталог на предмет его модификации и запустить тестовый набор.
Ответ 5
Используйте FAM, чтобы поместить монитор в файл.
Ответ 6
Следуйте этому руководству по использованию inotify Пример Inotify: Введение в Inotify с примером программы C
Ответ 7
используйте быструю хэш-функцию, задание cron и выходите!
Кроме того, это выглядит актуальным: http://en.wikipedia.org/wiki/Inotify
Ответ 8
По-видимому, watchdog работает как в Linux, так и в OSX, который может использоваться для мониторинга изменений в каталоге, а также отличный пример документация. Он также работает с python3.x в случае, если вы не хотите принудительно использовать python2.x