2013-04-09 76 views
1

我正在使用此代碼來檢測文件夾中創建文件/目錄的時間。當在指定文件夾中創建新文件/目錄時,它工作正常。但它不會在移動到文件夾中時通知或記錄文件/目錄。我如何檢測?python pyinotify已移動文件

#!/usr/bin/env python 

# monitors both files and dirs 

import os 
import pyinotify 
from datetime import datetime 

timestamp = datetime.today() 
wm = pyinotify.WatchManager() 
mask = pyinotify.IN_CREATE 

class PTmp(pyinotify.ProcessEvent): 
    def process_IN_CREATE(self, event): 
     print "Created: %s " % os.path.join(event.path, event.name) 
     event_log = open('/home/saad/Code/test/event_log', 'a') 
     event_log.write(event.name + ' - ' + timestamp.strftime('%c') + '\n') 
     event_log.close() 

notifier = pyinotify.Notifier(wm, PTmp()) 

wdd = wm.add_watch('/home/saad/Code/test/foo', mask, rec=True) 

while True: 
    try: 
     notifier.process_events() 
     if notifier.check_events(): 
      notifier.read_events() 
    except KeyboardInterrupt: 
     notifier.stop() 
     break 

回答

3

你可以看IN_MOVED_TO事件:

mask = pyinotify.IN_CREATE | pyinotify.IN_MOVED_TO 

class PTmp(pyinotify.ProcessEvent): 
    ... 
    def process_IN_MOVED_TO(self, event): 
     print "Moved: %s " % os.path.join(event.path, event.name) 
     event_log = open('/home/saad/Code/test/event_log', 'a') 
     event_log.write(event.name + ' - ' + timestamp.strftime('%c') + '\n') 
     event_log.close() 

(未測試,因爲我沒有一臺Linux機器可用現在)。

inotify事件的完整列表可在man pagepyinotify doc中獲得。

+0

作品。非常感謝! – koogee 2013-04-09 17:09:43

-1

從CD驅動程序使用afrty工具,對於linux,所以無法觸及它,它會通過電子郵件提醒您系統上發生的任何更改......如果它是網絡服務器,建議您創建CD或DVD,並要求他們將其放入服務器中安裝的CD驅動器中。否則從外部使用它,但我不知道如何實現。

http://archive09.linux.com/feature/113944