我正在使用监视程序监视已创建文件的目录(和子目录)。如果创建的文件是.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()
答案 0 :(得分:1)
我认为您可能需要在找到文件后立即添加睡眠。我认为你的脚本正在读取它,然后它才会在管道中有实际数据。