linux a une commande pratique appelée tail -f. J'ai appris aujourd'hui qu'il existe quelque chose qui s'appelle os.stat, alors j'ai écrit une petite source. J'essaye de surveiller le fichier passé de l'argument. Il est réalisé uniquement en se déplaçant à la fin du fichier, en obtenant la position actuelle du pointeur de fichier et en lisant les données du fichier.
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')
#Aller à la fin du fichier
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,
#Non atteint
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)
Au fait, si vous ne l'utilisez que sous Linux, vous pouvez en faire un script wrapper pour tail -f.
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 )