栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

python watchdog修改并创建了重复事件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python watchdog修改并创建了重复事件

简短的回答:

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

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

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


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

import sysimport timeimport loggingfrom watchdog.observers import Observerfrom watchdog.events import LoggingEventHandlerif __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 - <FileCreatedEvent: src_path=/home/unutbu/tmp/foobar>

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

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

但是当你冲洗时

In [128]: f.flush()

它报告一个FileModifiedEvent:

2014-02-05 16:29:55 - <FileModifiedEvent: src_path=/home/unutbu/tmp/foobar>

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

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

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

In [130]: f.close()2014-02-05 16:30:12 - <FileModifiedEvent: src_path=/home/unutbu/tmp/foobar>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383073.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号