用于观看目录更改的python dbus方法?

时间:2016-04-23 00:04:29

标签: python dbus inotify

我已经成功地在我的dbus mainloop中使用了io_add_watch的python绑定来响应已知单个文件中的更改。但我现在有一个案例,我在运行dbus主循环,并且需要在目录更改时才能工作。

我使用了命令行工具inotifywait -m directory,并使用了pyinotify提供的一些示例。什么不清楚我是如何把两者放在一起的。或者如果我应该。我可以只是启动一个使用管道直接运行inotifywait的线程,然后写入/run中的ram文件,我已经建立了io_add_watch来。我对glib / dbus / mainloop比较新,所以它对我来说仍然是一种魔力。对于我的目的,pyinotify似乎有点沉重,但我在这里没有经验。

我使用python3在Debian Jessie上运行。我不是在寻找任何跨平台的东西。

2 个答案:

答案 0 :(得分:1)

PyInotify可以轻松查看目录:

notifier = pyinotify.Notifier(wm, handler)
wm.add_watch('/tmp', pyinotify.IN_CREATE)
notifier.loop()

完整的教程在这里:https://github.com/seb-m/pyinotify/wiki/Tutorial#1-using-the-notifier-class-without-timeout

答案 1 :(得分:1)

特别是要使用dbus循环编织通知内容,诀窍是使用来自<div class="row"> <div class="col-lg-12"> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title"> <i class="fa fa-bar-chart-o fa-fw"></i> Analytics </h3> <div class="btn-group" style="float: right;"> <button class="btn">Action</button> <button class="btn dropdown-toggle" data-toggle="dropdown"> <span class="caret"></span> </button> <ul class="dropdown-menu"> <li><a href="#">Item I</a></li> <li><a href="#">Item II</a></li> <li><a href="#">Item III</a></li> <li class="divider"></li> <li><a href="#">Other</a></li> </ul> </div> </div> <div class="panel-body"> <div id="analytics-chart"></div> </div> </div> </div> </div> 的{​​{1}}。我使用过这样的东西:

ThreadedNotifier

我的pyinotify使用watchManager = pyinotify.WatchManager() inotifier = pyinotify.ThreadedNotifier(watchManager, FileEventHandler(mainService.eventStream)) inotifier.start() eventsPath = Path('/Pilot/Schedules') if not eventsPath.exists(): eventsPath.mkdir() watchManager.add_watch(eventsPath.as_posix(), pyinotify.IN_CLOSE_WRITE | pyinotify.IN_DELETE, rec=True, auto_add=True) mainloop = glib.MainLoop() try: mainloop.run() except KeyboardInterrupt: mainloop.quit() inotifier.stop() 等标准方法提交dbus更改。