python watchdog监视目录,用于创建文件并对该文件执行某些操作

时间:2013-09-16 14:15:43

标签: python watchdog

我正在使用监视程序监视已创建文件的目录(和子目录)。如果创建的文件是.csv,程序会读取它们(并对文件进行一些小的更改,但这实际上不是问题的一部分)。问题是有时readlines()返回一个空列表,我无法弄清楚它为什么这样做。即使我只是将相同的.csv文件复制到受监视的目录,它也会以空的方式返回一个空列表,因此它似乎不是.csv文件,这就是问题所在。我在OSX上运行python 2.7.5。 那么有人理解为什么会这样吗?

import os
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler


class CreatedHandler(FileSystemEventHandler):

    def on_created(self, event):

        if event.is_directory:
            return
        filepath, ext = os.path.splitext(event.src_path)
        if (ext == '.csv' and '-fixed' not in filepath):
            lines = list()
            with open(event.src_path, 'r') as f:
                lines = f.readlines()
            print len(lines)

if __name__ == "__main__":
    event_handler = CreatedHandler()
    observer = Observer()
    observer.schedule(event_handler, '.', recursive=True)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

1 个答案:

答案 0 :(得分:1)

我认为您可能需要在找到文件后立即添加睡眠。我认为你的脚本正在读取它,然后它才会在管道中有实际数据。