Linux hat einen praktischen Befehl namens tail -f. Ich habe heute erfahren, dass es so etwas wie os.stat gibt, also habe ich eine kleine Quelle geschrieben. Ich versuche, die vom Argument übergebene Datei zu überwachen. Dies wird nur realisiert, indem Sie zum Ende der Datei gehen, die aktuelle Position des Dateizeigers abrufen und die Daten aus der Datei lesen.
sample.py
#-*- coding: utf-8 -*-
import time
import os
import sys
from stat import *
def usage():
print "Usage: # python %s filename" % argv[0]
quit()
def init(filename):
file = open(filename,'r')
#Gehen Sie zum Ende der Datei
st_results = os.stat(filename)
st_size = st_results[ST_SIZE]
file.seek(st_size)
return file
def tail_f(file, usec):
msec = usec / 1000
while 1:
fpos = file.tell()
line = file.readline()
if not line:
time.sleep(msec)
file.seek(fpos)
else:
print line,
#Nicht erreicht
file.close()
pass
if __name__ == '__main__':
argv = sys.argv
argc = len(argv)
if( argc != 2 ):
usage()
filename = argv[1]
file = init(filename)
tail_f(file, 500)
Übrigens, wenn Sie es nur unter Linux verwenden, können Sie es zu einem Wrapper-Skript für tail -f machen.
sample.py
import sys
import os
if __name__ == '__main__':
argv = sys.argv
argc = len(argv)
if argc != 2:
print "test",
quit()
filename = argv[1]
os.system('tail -f ' + filename )