Rückgabe von Shell-Kommando in Variable

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
Benutzeravatar
Amberfox
User
Beiträge: 10
Registriert: Montag 8. Oktober 2007, 15:29
Wohnort: Paderborn

Hallo Forum,

ich bin wirklich ein Python-Neuling und habe bereits viel zu dem Thema gelesen und gesucht, aber wenn ich es nachprogrammiere, wirds nichts :/

Mein Problem....

Ich möchte gerne den Output eines Shell-Kommandos in eine variable schreiben. Ganz simpel habe ich folgendes geschrieben:

Code: Alles auswählen

#!/usr/bin/python

import subprocess
mycmd = "ls -ltr"
myls = subprocess.Popen(mycmd, shell=True)
Das funktioniert auch, nur ich erhalte den Output auch direkt auf der CMD. Wenn ich nun zusätzlich noch ein print mit einfüge, erhalte ich zwar den Output, aber auch noch zusätzliche Informationen wie:
<subprocess.Popen object at 0xb7d70e2c>

Kann mir jemand auf den richtigen Weg helfen??

Grüße und Danke im Vorraus

Jochen
Everything was all good just a week ago...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Amberfox hat geschrieben:Ich möchte gerne den Output eines Shell-Kommandos in eine variable schreiben.
Hallo Jochen!

Dafür ist subprocess da. Das weißt du ja schon. Hier findest du die Hilfe dazu: http://docs.python.org/lib/module-subprocess.html

Code: Alles auswählen

#!/usr/bin/python

import subprocess
args = ["ls", "-ltr"]
proc = subprocess.Popen(args, stdout = subprocess.PIPE)
retval = proc.stdout.read()
print retval
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Amberfox
User
Beiträge: 10
Registriert: Montag 8. Oktober 2007, 15:29
Wohnort: Paderborn

Hi,

super!! Das geht...
Ich hatte das mit der PIPE sogar auch schon gelesen, aber ich hatte die PIPE dann nicht abgefragt und folglich immer Fehlermeldungen erhalten wie etwa "Broken pipe"

Grüße und Danke!

Jochen
Everything was all good just a week ago...
Antworten