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
subprocess Argumentübergabe mit Leerzeichen
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Subprocess managed das richtig. Dein Problem ist ein anderes.
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:
Ü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')
[...]
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
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