Nach Namen suchen in einer Datei

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

Hallo,

Ich möchte in einer Datei bestimmte Namen filtern.
Die Datei erzeugt ein Programm, die sich die ganze Zeit erneuert bis ich ausschalte. Das heisst sie wird immer größer.

Hierzu möchte ich nach bestimmten Namen suchen und natürlich ausschliesen(da sie die ganze zeit erneuert wird) das ich den gleich Namen bekomme.
Weiß wer vielleicht wie ich das mache?

Danke und Gruß
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Wenn bei deiner Datei immer weiterhinten was angehängt wird, kannst du einfach mit "read()" die Datei auslesen und mit jedem weiteren "read()" immer nur den angehangen Teil erfassen.

Ansonsten doppelte Namen ausschließen sollte nun nicht das Problem sein, einfach eine Liste oder Wörterbuch nutzen und vor dem anhängen/eintragen prüfen ob der Name in der Sammlung schon existiert.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

Ich dachte ich könnte einen read Befehl benutzen für die Datei. Der die Datei immer wieder neu einliest. Aber dann habe ich das Problem.

Bei mehreren read funktionen ist das Problem. Woher weiss ich das der neue read befehl auch wirklich nur das angehängte nimmt.
Da ganze geht ja im ms Bereich.
Und zu den Wörtern:

Ich muss ja erkennen das es immer die gleichen sind zumindest die Wörter. Aber zu einem anderen Zeitpkt.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Wieviel Bytes werden denn pro Sekunde anghangen?
Wieso muss der Text parallel ausgewertet werden?
Warum muss der Austausch der Daten über eine Datei erfolgen und nicht über eine vernünftige Schnittstelle?
Ist die Datei überhaupt in regelmäßigen Abständen geschlossen, damit man sie überhaupt auslesen kann?

Ansonsten würde ich mir einfach das Offset des Zeigers aus der Datei speichern und vor dem nächsten "read()" per "seek()" den Zeiger auf die alte Position setzen.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

Also wenn ich Sie durchlaufen lasse werden es so 30 - 50MB in drei Stunden sein.
Also doch ziemlich viel.
Die Datei wird nicht regelmäßig erneuert, sondern es kommt auf die Situation an.Also nicht geschlossen sondern läuft live weiter

Da ich auf das eigendliche Programm leider keinen Zugriff habe. Deshalb schreibe ich das ganze in einen logfile und dann vergleich ich.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

@Campionissimo: Kannst du das Programm denn selbst starten? In dem Fall könntest du Python zur Steuerung ("subprocess"-Modul) verwenden und die Ausgabe direkt nach Python leiten.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Kann man einen (angenommenen) Log denn mit subprocess umleiten? Ausgabe klar, aber wenn das Programm selbst einige Filehandles benutzt, geht das bei denen dann auch?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

Ja das Programm starte ich. Ich steuere die ganzen Einstellung und die Verbindung. Ich leite das Debug Programm direkt in eine Datei.Und wie geht das ganze mit Python?
Gibt da was hilfreiches ? Also so ein Beispiel Programm.

Danke
Antworten