Я однажды сделал что-то вроде процесса демона для парсера, встроенного в Python. Мне нужно было просмотреть серию файлов и обработать их на Python, и это должно было быть действительно решение для нескольких ОС (в данном случае Windows & Linux). Я написал программу, которая следит за списком файлов, проверяя время их изменения. Программа некоторое время спит, а затем проверяет время изменения просматриваемых файлов. Если время модификации новее зарегистрированного ранее, файл изменился, и с этим файлом нужно что-то делать.
Примерно так:
import os
import time
path = os.path.dirname(__file__)
print "Looking for files in", path, "..."
# get interesting files
files = [{"file" : f} for f in os.listdir(path) if os.path.isfile(f) and os.path.splitext(f)[1].lower() == ".src"]
for f in files:
f["output"] = os.path.splitext(f["file"])[0] + ".out"
f["modtime"] = os.path.getmtime(f["file"]) - 10
print " watching:", f["file"]
while True:
# sleep for a while
time.sleep(0.5)
# check if anything changed
for f in files:
# is mod time of file is newer than the one registered?
if os.path.getmtime(f["file"]) > f["modtime"]:
# store new time and...
f["modtime"] = os.path.getmtime(f["file"])
print f["file"], "has changed..."
# do your stuff here
Это не похоже на первоклассный код, но работает довольно хорошо.
Есть другие ТАК вопросы по этому поводу, но я не знаю, дадут ли они прямой ответ на ваш вопрос:
Как реализовать питонический эквивалент tail -F?
Как посмотреть файл на предмет изменений?
Как я могу "посмотреть" файл для модификации / изменения?
Надеюсь, это поможет!