Nun, der einfachste Weg, ständig aus der Datei gelesen werden würde, überprüfen, was neu ist und Test für die Treffer.
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)
Diese Lösung mit readline
funktioniert, wenn Sie Ihre Daten einfach in den Zeilen angezeigt.
Wenn die Daten eine Art Stream sind, benötigen Sie einen Puffer, größer als die größte word
, die Sie suchen, und füllen Sie es zuerst. Auf diese Weise wird es etwas komplizierter ...
Ähnliches: http://stackoverflow.com/questions/136168/tail-a-file-with-python – Mark
Diese beiden Fragen scheinen identisch zu sein, aber in diesem Fall geht es darum, eine Datei ständig auf neue Zeilen zu überwachen, während die andere Frage ist über das Lesen der letzten x Zeilen – dbr