Python 无法将正则表达式与pyinotify一起使用

Python 无法将正则表达式与pyinotify一起使用,python,regex,pyinotify,Python,Regex,Pyinotify,可以将正则表达式与inotify shell命令一起使用,但不能与pyinotify一起使用。 我可以使用正则表达式获取目录列表并将其传递给add_watch,但是,文件夹“Do*”是动态的,因为它们经常被创建和销毁,因此,创建一个严格的列表并将其传递给add_watch函数是不准确的 我试图编译正则表达式并将其传递给add_watch,但它不起作用,可能是因为它需要一个字符串或字符串列表 import pyinotify,subprocess,re def onChange(ev): su

可以将正则表达式与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的监视函数,而不必创建一个严格的列表,然后传递它,因为目录内容会有所不同。

WatchManager.add\u watch
接受一个允许在路径名上执行全局搜索的函数

path
参数传递unicode str,而不是regex对象

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