2010-07-15 46 views
1

我想看一个目录,并且正在寻找文件修改。关于使用pyinotify的思考。问题在于,在使用IN_MODIFY事件检查文件更改时,如果我通过网络将甚至12 MB的小文件复制到目录,则会触发相当多的事件。pyinotify:处理IN_MODIFY触发器

我不想处理这么多触发器。我只想在文件复制后触发单个事件。我如何实现这一目标?

任何pyinotify中大师可以帮助

+0

您应该检查[这个问题pyinotify中(https://github.com/seb-m/pyinotify/issues/45)。 IN_MODIFY事件很大程度上受到写入文件更改方式的影响(例如,'nano'触发2个IN_MODIFY事件,而'sublime-text'不会触发任何) – 2015-02-08 21:34:59

回答

2

尝试改变IN_MODIFYIN_CLOSE_WRITE。 当可写文件关闭时发生IN_CLOSE_WRITE事件。这应该只发生一次,除非复制文件的程序选择多次关闭文件。

上述变化可能是您所需要的,但如果不是,this basic code 可以是一个非常有用的工具,用于查看什么时候发生什么事件。有了它,你应该能够确定要使用的事件。


# Example: loops monitoring events forever. 
# 
import pyinotify 

# Instanciate a new WatchManager (will be used to store watches). 
wm = pyinotify.WatchManager() 
# Associate this WatchManager with a Notifier (will be used to report and 
# process events). 
notifier = pyinotify.Notifier(wm) 
# Add a new watch on /tmp for ALL_EVENTS. 
wm.add_watch('/tmp', pyinotify.ALL_EVENTS) 
# Loop forever and handle events. 
notifier.loop() 
+0

给定的链接不再有效 – Ajoy 2013-03-23 05:05:28

+0

@Ajoy:谢谢通知。链接已被修复,代码重复上述。 – unutbu 2013-03-23 13:18:13