tail -f en Python
Le but est réaliser une version minimaliste sans prétention de la commande unix tail avec l’option -f. Donc le but est de suivre le contenu d’un fichier comme une log.
J’ai commencé par créer une bibliothèque (libtail) qui porte la fonction tail.
#!/usr/bin/env python3
from time import sleep
def tail (filename, n=0, polling=0.01):
num_lines = sum(1 for line in open(filename))
f = open(filename,'r')
cpt = 0
while cpt < num_lines - n :
cpt += 1
next(f)
try:
while True:
try:
l = next(f)
print(filename,":",l[:-1])
except:
sleep(polling)
except:
f.close()
Et un main.py qui l’appel…
#!/usr/bin/env python3
from libtail import tail
from sys import argv
if len(argv) != 2:
print("""utilisation:
%s FICHIER"""%argv[0])
exit(1)
tail(argv[1])