Seite 1 von 1

subprocess.Popen

Verfasst: Freitag 3. März 2006, 13:51
von scrowface

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?

Verfasst: Freitag 3. März 2006, 14:56
von jens
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

Verfasst: Freitag 3. März 2006, 15:38
von modelnine
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...