Seite 1 von 1

Popen hängt

Verfasst: Donnerstag 3. Juni 2004, 18:35
von Leonidas
Hallo Leute!
Ich habe folgendes Problem: ich möchte eine Datei namens ger-eng.txt (ja, ein 6MB großes wörterbuch) mit agrep durchsuchen. Nun, da agrep nicht zum Windows Standardumfang gehört, habe ich mir irgendwo ein Win32 binary heruntergeladen, keine Ahnung wo (denke es waren die UnxUtils).
Ihr könnt es aber hier
runterladen. Das Wörterbuch ist hier
zu finden. Der aufruf ist

Code: Alles auswählen

agrep -ihw 'get' ger-eng.txt
Das mache ich auch mit os.popen3:

Code: Alles auswählen

import os
stdin, stdout, stderr = os.popen3("agrep -ihw 'get' ger-eng.txt")
if stderr.readlines() != []:
    print stdout.readlines()
Das hängt! Aber wenn ich erst stdout.readlines() und dann stderr.readlines() dann ist alles in ordnung (aber ich will ja erst wissen ob es Sinn macht von stdout zu lesen, denn wenn in stderr was zu finden ist, kann man es gleich vergessen). Interessanterweise läuft es beim aufruf von agrep mit abc statt get problemlos.
Hilfe!

Verfasst: Freitag 4. Juni 2004, 19:42
von Milan
Hi. Bist du ganz sicher, dass es nicht eher eine Abfrage auf Gleichheit, statt auf Ungleichheit (!=) sein soll :wink: ? Ansonsten... mit der kleinen Korrektur läuft es wunderbar: er findet keine passenden Wörter (wird wohl an -w liegen), aber meldet das auch korrekt.

Verfasst: Montag 7. Juni 2004, 07:23
von Leonidas
Milan hat geschrieben:Hi. Bist du ganz sicher, dass es nicht eher eine Abfrage auf Gleichheit, statt auf Ungleichheit (!=) sein soll :wink: ? Ansonsten... mit der kleinen Korrektur läuft es wunderbar: er findet keine passenden Wörter (wird wohl an -w liegen), aber meldet das auch korrekt.
Ja, sollte eigentlich == sein, stimmt. Also bei mir hängt es. Ich habe es jetzt so gelöst: zuerst lese ich stdout aus, dann stderr und wenn dort was drinsteht, dann wird stdout verworfen. Naja, auch gut.