[Python-de] Status von geöffneten Files

Stefan Behnel behnel_ml at gkec.informatik.tu-darmstadt.de
Die Jan 31 13:52:25 CET 2006



Steffen Oschatz schrieb:
> anknuepfend an meine letzte Frage: "grep Logfiles mit re"  moechte ich nun 
> das grepen des Logfiles optimieren, indem ich das File geoeffnet halte und 
> regelmaeßig
> jeweils bis zum Ende lese und entsprechend grepe. 


Hallo,

ich habe da so den leisen Verdacht, dass du damit gegen die Unix-Semantik von
Dateien anarbeitest. Wenn du eine Datei offen hast und ein anderes Programm
verändert sie, dann siehst du das nicht. Also ist ein unabhängiges 'stat' hier
wohl das richtige. Dann müsstest du den Teil der Datei überspringen, den du
(entsprechend der vorherigen Länge) schon gelesen hast und kannst ab da
greppen. Zumindest, wenn nur angehängt wird und nichts innerhalb der Datei
passiert, aber das sollte bei Log-Files der Fall sein.

Also: Datei nicht auflassen, sondern einfach bei Änderung neu öffnen und den
bekannten Teil per 'seek' überspringen. Klingt nicht so aufwändig, dass es in
der stdlib implementiert werden müsste - und ist wahrscheinlich eh das
effizienteste, da das Betriebsystem mit großer Wahrscheinlichkeit alle
benötigten Daten (inodes und angehängten Dateiteil) noch im Speicher hat.

Gruß,
Stefan