Sound aufnehmen?

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.
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Freitag 26. September 2008, 05:11

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
BlackJack

Freitag 26. September 2008, 07:46

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']
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Samstag 27. September 2008, 09:33

Und das funktioniert auch. Das gibt der Listenoption (mindestens) einen klaren Vorteil!

Gruß, Seven
Antworten