subprocess.Popen

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
scrowface
User
Beiträge: 10
Registriert: Donnerstag 2. März 2006, 15:05

Code: Alles auswählen

N=input()
process_1 = subprocess.Popen("cjpeg  -quality "+ "N"+"bild.pgm" +">bild.jpg",shell=True, stdout=subprocess.PIPE)
process_1.wait()
process_1.returncode
Ich moechte eigentlich, dass N so zu dem string hinzugefuegt wird, dass er weiterhin innerhalb
des Strings als Integer behandelt wird.
Der Aufruf von cjpeg sieht zum Beispiel auf der Konsole so aus: "cjpeg -quality 10 bild.pgm>bild.jpg".
Wenn ich einfach dieser string in ..Popen() eingebe klappt es ja auch aber ich moechte, dass der Quality-wert vom user eingeben wird.
Wie mache ich das?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hm! Wo liegt dein Problem?

Code: Alles auswählen

quality = raw_input("Qualität?")
cmd = "cjpeg -quality %i bild.pgm>bild.jpg" % quality
print cmd

process_1 = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE)
process_1.wait()
process_1.returncode 
btw. nimm niemals input() sondern immer raw_input() !!! Siehe: http://www.python-forum.de/viewtopic.php?t=5021

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Ahem... Warum überhaupt, wenn Du eh einen Shell-Aufruf machen willst, subprocess benutzen? os.system() geht dafür auch wunderbar.

Unabhängig davon solltest Du Dir überlegen ob Du nicht auf die Shell verzichten kannst indem Du es ein bissel anders strukturierst, nämlich zum Beispiel keine Redirection zu machen, und stattdessen stdout zu lesen und es von Python aus in eine Datei zu speichern...
--- Heiko.
Antworten