Popen hängt

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten