【问题标题】:Unable to use regex with pyinotify无法将正则表达式与 pyinotify 一起使用
【发布时间】:2019-06-26 08:03:54
【问题描述】:

可以将正则表达式与 inotify shell 命令一起使用,但不能与 pyinotify 一起使用。 我可以使用正则表达式获取目录列表并将其传递给 add_watch,但是,文件夹“Do *”是动态的,因为它们经常被创建和销毁,因此创建一个刚性列表并将其传递给add_watch 函数会不准确。

我尝试编译正则表达式并将其传递给 add_watch,但它不起作用,可能是因为它需要一个字符串或字符串列表。

import pyinotify,subprocess,re
def onChange(ev):
  subprocess.run("echo 'changed'", shell = True)

wm = pyinotify.WatchManager()
regex_dir = re.compile('/var/run/shm/Do*/updates/ab*.xml')
wm.add_watch(regex_dir, pyinotify.IN_CLOSE_WRITE , onChange)
notifier = pyinotify.Notifier(wm)
notifier.loop()

我想将一个正则表达式传递给 pyinotify 的 add_watch 函数,而不必创建一个严格的列表然后传递它,因为目录内容会有所不同。

【问题讨论】:

    标签: python regex pyinotify


    【解决方案1】:

    WatchManager.add_watch 接受一个do_glob option,它允许对路径名执行通配。

    您为 path 参数传递了一个 unicode str 而不是一个正则表达式对象。

    dir_glob = '/var/run/shm/Do*/updates/ab*.xml'
    wm.add_watch(dir_glob, pyinotify.IN_CLOSE_WRITE, onChange, do_glob=True)
    

    【讨论】:

      猜你喜欢
      • 2015-12-18
      • 2016-12-29
      • 2011-06-19
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      相关资源
      最近更新 更多