2010-07-15 80 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