J'écris actuellement un programme en python sur un système Linux. L'objectif est de lire un fichier journal et d'exécuter une commande bash lors de la recherche d'une chaîne particulière. Le fichier journal est constamment écrit par un autre programme. Ma question est:Lecture à partir d'un fichier fréquemment mis à jour
Si j'ouvre le fichier en utilisant la méthode open(), mon objet fichier Python sera-t-il mis à jour alors que le fichier sera écrit par l'autre programme ou devrai-je rouvrir le fichier à intervalles réguliers?
Merci
Jim
MISE À JOUR: Merci pour les réponses à ce jour. J'aurais peut-être dû mentionner que le fichier est en train d'être écrit par une application Java EE, donc je n'ai aucun contrôle sur le moment où les données sont écrites dessus. J'ai actuellement un programme qui rouvre le fichier toutes les 10 secondes et essaie de lire à partir de la position d'octet dans le fichier qu'il a lu pour la dernière fois. Pour l'instant, il ne fait qu'imprimer la chaîne retournée. J'espérais que le fichier n'avait pas besoin d'être rouvert mais la commande de lecture aurait en quelque sorte accès aux données écrites dans le fichier par l'application Java.
#!/usr/bin/python
import time
fileBytePos = 0
while True:
inFile = open('./server.log','r')
inFile.seek(fileBytePos)
data = inFile.read()
print data
fileBytePos = inFile.tell()
print fileBytePos
inFile.close()
time.sleep(10)
Merci pour les conseils sur pyinotify et les générateurs. Je vais jeter un oeil à ceux-ci pour une meilleure solution.
Cette réponse doit être acceptée – Quinma
J'upvote si la réponse contient un exemple de code en termes de code de l'OP. –
@ Chiel92: échantillon de code ajouté à partir du site de David Beazley –