Seite 1 von 1
Verfasst: Donnerstag 25. September 2008, 23:39
von lunar
1:1
Verfasst: Freitag 26. September 2008, 05:11
von snakeseven
Ikke nochmal,
Code: Alles auswählen
args = ['C:/Ablage/sox12181/sox -q', 'C:/Temp/Test.wav', '-e stat -v']
Wenn ich die Parameter als Liste übergebe, findet Sox die angegebene Datei nicht:
Code: Alles auswählen
proz = subprocess.Popen(args)
File "C:\Programme\Python25\lib\subprocess.py", line 593, in __init__
errread, errwrite)
File "C:\Programme\Python25\lib\subprocess.py", line 815, in _execute_child
startupinfo)
WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden
übergebe ich das Ganze als String, ist alles OK.
Code: Alles auswählen
args = ''.join(('C:/Ablage/sox12181/sox -q ', 'C:/Temp/Test.wav', ' -e stat -v'))
('shell=True' verhindert unter Windows, dass ein zusätzliches DOS-Fenster geöffnet wird)
Frage:
In welcher Form übergebe ich die Parameter innerhalb der Liste ?
Denn wenn ich dennoch weiterhin auf die Leerzeichen zwischen den Parametern achten muß, sehe ich den Vorteil gegenüber einem String nicht mehr !?
Gruß,
Seven
Verfasst: Freitag 26. September 2008, 07:46
von BlackJack
In Deinem Beispiel wird das Programm 'C:/Ablage/sox12181/sox -q' zum Ausführen nicht gefunden. Das Programm gibt's ja auch nicht, es heisst nur 'C:/Ablage/sox12181/sox' und '-q' ist ein Argument. Du musst in der Liste alle Argumente *einzeln* aufführen, also im Grunde das Angeben, was das Programm als `sys.argv` bekommt.
Code: Alles auswählen
args = ['C:/Ablage/sox12181/sox', '-q', 'C:/Temp/Test.wav', '-e', 'stat', '-v']
Verfasst: Samstag 27. September 2008, 09:33
von snakeseven
Und das funktioniert auch. Das gibt der Listenoption (mindestens) einen klaren Vorteil!
Gruß, Seven