gpt4 book ai didi

python - Pyinotify/Watchdog 在一次编辑中触发修改事件两次

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:01 24 4
gpt4 key购买 nike

每次修改某个文件时,我都尝试启动一个 python 脚本。准确地说,我在 Raspberry Pi 的串行端口上有一个设备,它将数据写入文本文件 (test.txt)。我已经尝试过这两种工具 - Watchdog/Pyinotify。每次修改文件(触发事件 Watchdog:on_modified/Pyinotify:IN_MODIFY)时,它都会重复触发。我已经尝试了所有其他方法,甚至像一些人建议的那样使用 IN_CLOSE_WRITE ,但这根​​本不起作用。有人知道,一个文件更新如何只触发一个事件?

我使用 Pyinotify 的代码(稍微编辑过的教程文件):

import pyinotify,subprocess
def onChange(ev):
cmd = ['/usr/bin/env', 'python', 'doThisFile.py', ev.pathname]
subprocess.Popen(cmd).communicate()
wm = pyinotify.WatchManager()
wm.add_watch('/home/pi/test.txt', pyinotify.IN_MODIFY, onChange)
notifier = pyinotify.Notifier(wm)
notifier.loop()

或看门狗:

#!/usr/bin/python
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import subprocess
class MyHandler(FileSystemEventHandler):
def on_modified(self, event):
subprocess.call("/home/pi/doThisFile.py")
print("Code started")
if __name__ == "__main__":
event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, path='.', recursive=False)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()

最佳答案

我在使用pyinotify时遇到了同样的问题。但将 IN_MODIFY 更改为 IN_CLOSE_WRITE 解决了该问题。您可以从此answer获取更多信息

关于python - Pyinotify/Watchdog 在一次编辑中触发修改事件两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37768601/

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