subprocess Argumentübergabe mit Leerzeichen

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
kniffeldi
User
Beiträge: 2
Registriert: Samstag 18. September 2010, 21:24

Hallo,

ich möchte mit:

p=subprocess.Popen([prog,source,arg1,arg2], stdout=subprocess.PIPE)

ein Programm mit Argumenten aufrufen.
Mein Problem, in arg2 ist ein Leerzeichen, und der Rest ab dem Leerzeichen
wird als neues Argument interpretiert.
Das Leerzeichen muß aber bleiben, sonst funktioniert der Programmaufruf nicht richtig.
Wie kann man das lösen??

Vielen Dan schon im Vorraus
Marco
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Subprocess managed das richtig. Dein Problem ist ein anderes.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wie lautet das auszuführende Kommando und was genau beim Programmaufruf funktioniert nicht richtig?

Übrigens, falls man mit der Aufteilung der Argumente nicht klar kommt oder das zu umständlich findet, kann man auch das in der Doku erwähnte `shlex.split()` benutzen:

Code: Alles auswählen

from shlex import split
from subprocess import PIPE, Popen

def get_output(command):
    proc = Popen(split(command), stdout=PIPE)
    output, errors = proc.communicate()
    return output

get_output('ls -l')
[...]
kniffeldi
User
Beiträge: 2
Registriert: Samstag 18. September 2010, 21:24

Ich habe den Fehler gefunden.
Der Aufruf in der Shell lautet:
exiftool test.jpg '-DateTimeOriginal=2010:09:19 11:09:31'

Beim gleichen Aufruf mit popen wird 11:09:31 als 3.Argument interpretiert.
Nach dem Weglassen der Apostrophe funktioniert es auch mit popen.

Vielen Dank für Eure Hilfe!
Marco
Antworten