Seite 1 von 1

Ausgabe eines Programms mit os.system()

Verfasst: Mittwoch 26. Januar 2011, 23:53
von zenker
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!

Re: Ausgabe eines Programms mit os.system()

Verfasst: Donnerstag 27. Januar 2011, 00:15
von Barabbas
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

Re: Ausgabe eines Programms mit os.system()

Verfasst: Donnerstag 27. Januar 2011, 00:29
von zenker
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!