Seite 1 von 1

Return value von popen bevor das file-Object geclosed wird

Verfasst: Freitag 12. Januar 2007, 10:53
von Nirven
Hi,

ich möchte in einem Script mit os.popen ein Befehl ausführen, den Rückgabewert des Befehls überprüfen, und wenn es keinen Fehler gab, die Ausgabe des Befehls auswerten.

Code: Alles auswählen

dump = os.popen(r'dcmdump c:\powerbook.dcm')
if not dcmdump_return: #hier wird der noch nicht existierende return value abgefragt
    for line in dump:
        print line
dcmdump_return = dump.close()

Funktioniert natürlich nicht, weil dcmdump_return erst definiert wird, nachdem es bereits ausgelesen ist.

Als Lösung speichere ich die Zeilen aus dump erst in eine Liste, schließe dump, prüfe den return value, und bearbeite dann gegebenenfalls den Inhalt der Liste.

Code: Alles auswählen

 dump = os.popen(r'dcmdump c:\powerbook.dcm')
 dump_list = []
 for line in dump:
     dump_list.append(line)

 dcmdump_return = dump.close()
 if not dcmdump_return:
     for line in dump_list:
         print line
Dieser Umweg über die Liste gefällt mir aber nicht sonderlich, das fühlt sich irgendwie unnötig kompliziert an. Habe ich hier vielleicht eine einfachere Möglichkeit übersehen? Ist zwar vermutlich rein kosmetisch, aber ich bin trotzdem für jeden sachdienlichen Hinweis dankbar :)

Unter UNIX/Linux

Verfasst: Freitag 12. Januar 2007, 11:22
von sunmountain

Verfasst: Freitag 12. Januar 2007, 11:36
von Leonidas
Den Rückgabewert bekommt man auch schön über das Modul subprocess.

Verfasst: Freitag 12. Januar 2007, 11:50
von Luzandro
Du könntest natürlich statt der Liste den kompletten Output gleich direkt in einen String lesen, aber du wirst kaum den Rückgabewert vor der Ausgabe des Programms bekommen...

Code: Alles auswählen

dcmdump = os.popen(r'dcmdump c:\powerbook.dcm')
dump = dcmdump.read()
if dcmdump.close() is not None:
    print dump

Verfasst: Freitag 12. Januar 2007, 12:11
von Nirven
Danke für die Antworten :)

subprocess sah zwar im ersten Moment etwas komplex, tut aber genau was ich gerne hätte. Ich sollte mir endlich ein neueres Buch besorgen...

Verfasst: Freitag 12. Januar 2007, 15:57
von Leonidas
Nirven hat geschrieben:Ich sollte mir endlich ein neueres Buch besorgen...
Oder [wiki]Neue Features[/wiki] lesen und erweitern, damit noch mehr Leute was davon haben.