ウォッチドッグを使用して、作成されたファイルのディレクトリ (およびサブディレクトリ) を監視しています。作成されたファイルが .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()