我正在使用看门狗来监视创建文件的目录(和子目录)。如果创建的文件是 .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()