Python3 FileSystemEventHandler忽略/隐藏“相似”多个答案

问题描述 投票:0回答:1

最近我开始在Rpi上使用进行编码。我已经成功使用堆栈和88 {tag:MySql] **数据库制作了一些小项目。

现在,我正在使用脚本来创建文件版本系统,该文件版本系统将更改的文件保存在另一个带有日期等的方向上。

但是现在我正在研究Observer脚本。当它运行时,它正在检测已更改的文件。但是,如果更改了单个文件,脚本将多次检测到该文件。查看输出。

我已经在检测它是否只是文件夹或文件中的更改。因此,我已经可以忽略已经删除的文件名后面的〜符号。

我已经测试了一些不同的东西,但是没有任何结果。你们中有人有解决此问题的想法吗?

我的代码:


import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
path='/home/pi/Python/test/Folder/'

class MyHandler(FileSystemEventHandler):
    def on_any_event(self, event):

        PathVar = event.src_path + '/'
        if PathVar == path:
            print('Change in Folder IGNORE action')
            print()
        else:
#            print("Event!")
            ChangeVarSrc_path = event.src_path
            ChangeVarSrc_path = ChangeVarSrc_path.replace(path, "")  # Remove Path in string
            ChangeVarSrc_path = ChangeVarSrc_path.replace('~', "")  # If ~ exists in string remove

            print(ChangeVarSrc_path)
            print()

            ################# My Idea but not working ################
#           NewAnswer = ChangeVarSrc_path
#           If OldAnswer == NewAnswer:
#               print('Same Answer Ignore')
#           else:
#               print(NewAnswer)
#               OldAnswer = NewAnswer
            ############### Bad Idea not working :) ################


event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=False)
observer.start()

try:
    while True:
        time.sleep(5)
except KeyboardInterrupt:
    observer.stop()
observer.join()

答案:


2Observer.py
Change in Folder IGNORE action
2Observer.py
2Observer.py
2Observer.py
2Observer.py
2Observer.py
2Observer.py
2Observer.py
2Observer.py
2Observer.py
2Observer.py
2Observer.py
Change in Folder IGNORE action
python raspberry-pi file-handling observers
1个回答
0
投票

您观看所有事件,所以才看到很多条目。您可以打印event.event_type来查看它们。您可以改用on_modified

© www.soinside.com 2019 - 2024. All rights reserved.