Ausgabe eines Programms mit os.system()

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
zenker
User
Beiträge: 19
Registriert: Dienstag 25. August 2009, 17:04

System: Linux Ubuntu 10.10

Hi,

eine Anfängerfrage:

folgende Zeile eines Programms

Code: Alles auswählen

os.system("exiftool "+bilddateiname+" > ausgabedatei")
schreibt mir die Exifs eines Digitalbildes in eine Ausgabedatei.
Jetzt möchte ich aber nicht die Ausgabe in einer Datei haben, sondern in einer Liste im Programm, die ich später weiterverarbeiten will.

Könnte mir mal jemand einen Denkanstoß geben, wo ich nachlesen kann um das Problem zu lösen?
"Subprocess"?

Für Antworten im voraus herzlichen Dank!
Zuletzt geändert von zenker am Donnerstag 27. Januar 2011, 00:30, insgesamt 1-mal geändert.
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

Hallo,

du hast doch das Stichwort schon genannt => "subprocess". Eine kurze Google-Suche tut recht schnell die offizielle Dokumentation auf (http://docs.python.org/library/subprocess.html) an deren Ende sich verschiedene Beispiele finden.

Mal so ganz allgemein:

Code: Alles auswählen

print subprocess.Popen(["ls", "-als"], stdout=subprocess.PIPE).stdout.read()
Die Umleitung mit ">" kannst du dir sparen - lies besser mit subprocess die Ausgabe des aufgerufenen Programmes und schreibe die Zieldatei dann mit Python-Boardmitteln. Falls du (was eigentlich nicht empfehlenswert ist) Pipes und Streamumleitungen direkt in der Shell (und nicht mit Subprocess) erledigen möchtest, musst du Popen noch den Parameter "shell=True" übergeben.

Besten Gruß,

brb
zenker
User
Beiträge: 19
Registriert: Dienstag 25. August 2009, 17:04

Okay, danke! War mir nicht so ganz sicher ob ich da auf dem richtigen Weg bin.
Werde mich dann mal mit "subprocess" beschäftigen.

Danke noch mal!
Antworten