gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:40:00 26 4
gpt4 key购买 nike

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

最佳答案

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)

关于python - 无法将正则表达式与 pyinotify 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56768042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com