Seite 1 von 1

Verfasst: Donnerstag 25. September 2008, 23:39
von lunar
1:1 :D

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