python watchdog 同时检测到多个事件_python watchdog修改并创建了重复事件

小编典典

简短的回答: f = open(... ,

'w')生成FileCreatedEvent,f.flush()或者f.close()可以生成FileModifiedEvent。是的,创建文件通常会同时生成FileCreatedEvent和FileModifiedEvents。

是否可以安全地忽略FileCreatedEvents取决于您要执行的操作。如果您有兴趣在创建文件时做出反应,则需要处理FileCreatedEvents,并且可能忽略FileModifiedEvents,因为在修改文件时可以生成FileModifiedEvents,而无需生成FileCreatedEvents。

尝试使用规范的看门狗脚本(如下),并且所有内容都应该更加清晰。

长答案:要查看发生了什么,请直接从docs运行规范的看门狗程序:

import sys

import time

import logging

from watchdog.observers import Observer

from watchdog.events import LoggingEventHandler

if __name__ == "__main__":

logging.basicConfig(level=logging.INFO,

format='%(asctime)s - %(message)s',

datefmt='%Y-%m-%d %H:%M:%S')

path = sys.argv[1] if len(sys.argv) > 1 else '.'

event_handler = LoggingEventHandler()

observer = Observer()

observer.schedule(event_handler, path, recursive=True)

observer.start()

try:

while True:

time.sleep(1)

except KeyboardInterrupt:

observer.stop()

observer.join()

从终端:

% mkdir ~/tmp

% cd ~/tmp

% script.py

现在,当您在w模式下打开文件时,在Python解释器中:

In [126]: f = open('/home/unutbu/tmp/foobar', 'w')

终端打印

2014-02-05 16:29:34 -

当您写入文件时,看门狗不报告任何事件:

In [127]: f.write('Hi')

但是当你冲洗时

In [128]: f.flush()

它报告一个FileModifiedEvent:

2014-02-05 16:29:55 -

如果您将更多内容写入文件:

In [129]: f.write(' there')

同样,关闭文件时将报告FileModifiedEvent,因为更多的输出将刷新到磁盘:

In [130]: f.close()

2014-02-05 16:30:12 -

2021-01-20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值