我想監視目錄,而目錄有子顯示目錄和子目錄中有與.md
薩姆文件。 (也許還有其他的一些文件,如* .SWP ...)蟒蛇pyinotify中監視指定後綴的文件在目錄
我只想監控.MD文件,我看了文檔,而且只有一個ExcludeFilter
,並在問題:https://github.com/seb-m/pyinotify/issues/31說,只有目錄可以過濾,但不是文件。
現在我所做的是在process_*
函數中進行過濾,通過fnmatch
檢查event.name
。
所以,如果我只是想監視指定後綴的文件,有沒有更好的辦法?謝謝。
這是我寫的主要代碼:
!/usr/bin/env python
# -*- coding: utf-8 -*-
import pyinotify
import fnmatch
def suffix_filter(fn):
suffixes = ["*.md", "*.markdown"]
for suffix in suffixes:
if fnmatch.fnmatch(fn, suffix):
return False
return True
class EventHandler(pyinotify.ProcessEvent):
def process_IN_CREATE(self, event):
if not suffix_filter(event.name):
print "Creating:", event.pathname
def process_IN_DELETE(self, event):
if not suffix_filter(event.name):
print "Removing:", event.pathname
def process_IN_MODIFY(self, event):
if not suffix_filter(event.name):
print "Modifing:", event.pathname
def process_default(self, event):
print "Default:", event.pathname
我之前曾經評論說我無法讓這個工作,但現在我明白了。你需要編輯'SUFFIXES'並移除'*'(否則它永遠不會匹配),並在'fn.name'上調用'splitext',因爲'pevent'可調用將'Event'作爲參數。 +1,比我的解決方案更好,我實際上試圖用'pevent'解決這個問題,但由於某種原因無法使用它。 –
非常感謝,這種方式太酷了!代碼中有一點錯誤。當使用'suffix_filter'作爲'pevent'的回調函數時,suffix_filter的參數是一個'event',所以它應該是'os.path.splitext(fn.name)[1]' –
Tanky,@Paulo:謝謝指出編碼錯誤。只要有可能,我不會發布未經測試的東西,但不能在這種情況下,因爲我的操作系統沒有inotify。 – martineau