Seite 1 von 1

Binär Datei durchsuchen

Verfasst: Dienstag 3. Mai 2011, 20:09
von tomduli
Hallo zusammen,

ich bin absoluter Python Neuling. Hab schon ewig im Netz gesucht und keine Antwort gefunden.
Ich habe folgendes Problem:
In einer Menge Binärdateien befinden sich jeweils am ENDE der Datei Informationen im "normlen" ASCI Text Format.
Jetzt soll in diesem Text ein bestimmter String gesucht werden und wenn dieser gefunden ist die Datei kopiert werden.
Gemacht habe ich das im moment mit dem line.find.
Jetzt habe ich das Problem das manche Dateien in denen sich der String befindet tortzdem nicht kopiert werden. Ich habe den Verdacht das beim Durchsuchen der Datei irgendwo durch Zufall das "EOF" Zeichen für Text Dateien kommt und Python damit das suchen aufhört weil es denkt "die Datei ist zuende".

Weiß jemand rat wie ich das hin kriegen kann das auf alle Fälle bis zum Ende gesucht wird oder woran es sonst noch liegen könnte ?

Viele Grüße,

Tomduli

Re: Binär Datei durchsuchen

Verfasst: Dienstag 3. Mai 2011, 21:01
von Dauerbaustelle
Wenn die Dateien nicht zu groß sind, kannst du einfach alles auf einmal einlesen (`.read`) und dann von hinten (`.rfind`) oder vorn (`.find`) in den String suchen.

Re: Binär Datei durchsuchen

Verfasst: Dienstag 3. Mai 2011, 21:16
von snafu
@Dauerbaustelle: Ist das wirklich so, dass von hinten gesucht wird? In der Doku steht ja erstmal nur, das quasi das letzte Vorkommen des gesuchten Strings angezeigt wird. Das sagt für mich jetzt nicht unbedingt etwas über das implementierte Vorgehen der Funktion aus.

Die Frage des Threaderstellers ist damit übrigens nicht beantwortet. Diese ist ja, ob man mit Python über das EOF hinauslesen kann.

Re: Binär Datei durchsuchen

Verfasst: Dienstag 3. Mai 2011, 22:07
von Hyperion
Ich denke mal die Lösung ist es, die Datei eben als Binärdatei zu öffnen, zur betreffenden Stelle zu springen (``seek``) und den letzten Teil als Text zu behandeln.

Re: Binär Datei durchsuchen

Verfasst: Dienstag 3. Mai 2011, 22:15
von Dauerbaustelle
snafu hat geschrieben:Die Frage des Threaderstellers ist damit übrigens nicht beantwortet. Diese ist ja, ob man mit Python über das EOF hinauslesen kann.
Na klar, `read` liest immer bis zum Ende. Das war gefragt.

Re: Binär Datei durchsuchen

Verfasst: Dienstag 3. Mai 2011, 22:21
von BlackJack
@snafu: Auch wenn es da nicht explizit steht wäre es schon *ziemlich* blöd implementiert wenn `rfind()` nicht von hinten sucht.

@Dauerbaustelle: Ob `read()` wirklich bis zum Ende liest hängt vom Betriebssystem und dem Modus beim öffnen ab. Bei Windows hört's bei als Textdatei geöffneten Dateien beim EOF auf.