Bueno, la forma más sencilla sería leer constantemente desde el archivo, comprobar lo que es nuevo y prueba de golpes.
import time
def watch(fn, words):
fp = open(fn, 'r')
while True:
new = fp.readline()
# Once all lines are read this just returns ''
# until the file changes and a new line appears
if new:
for word in words:
if word in new:
yield (word, new)
else:
time.sleep(0.5)
fn = 'test.py'
words = ['word']
for hit_word, hit_sentence in watch(fn, words):
print "Found %r in line: %r" % (hit_word, hit_sentence)
Esta solución con readline
obras si conoce sus datos aparecerán en las líneas.
Si los datos son algún tipo de flujo, necesita un búfer, más grande que el word
más grande que está buscando, y llénelo primero. Se vuelve un poco más complicado de esa manera ...
Algo similar: http://stackoverflow.com/questions/136168/tail-a-file-with-python – Mark
Esas dos preguntas parecen idénticas, pero esta se trata de supervisar constantemente un archivo para nuevas líneas, mientras que el otro La pregunta se trata de leer las últimas líneas x – dbr