python pyinotify移动文件

时间:2013-04-09 14:48:02

标签: python file operations 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

2 个答案:

答案 0 :(得分: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机箱)。

man pagepyinotify doc中提供了完整的inotify事件列表。

答案 1 :(得分:-1)

使用afick工具,对于Linux,来自CD驱动程序,因此无法触及,它会通过电子邮件提醒您系统上的任何更改...如果是网络服务器,建议您创建一个CD或DVD并要求他们将其放入服务器中的已安装CD驱动器中。否则从外面使用它,但我不知道如何实现。

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