最近我开始在Rpi上使用python进行编码。我已经成功使用堆栈和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
您观看所有事件,所以才看到很多条目。您可以打印event.event_type
来查看它们。您可以改用on_modified。