2013-10-11 13 views
6

Ich habe den folgenden CodePython Popen nicht finden kann die angegebene Datei

pathToFile = "R:\T2 Output\12345--01--Some File 1--ABCD.mp4" 
process = subprocess.Popen(['ffprobe.exe', '-show_streams', '"'+pathToFile+'"'], 
    shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 

ich den Fehler:

[Error 2] The system cannot find the file specified 

Was habe ich versucht:

  • Ändern shell = True shell = False
  • Kombinieren des Befehls in eine einzige Zeichenfolge anstelle einer Liste (ich sogar pri nt es zu screenen, und ich kann kopieren und in eine Eingabeaufforderung, wo die Datei ausgeführt wird und gibt die erwartete Ausgabe (kein Fehler)
  • Ich habe sichergestellt, dass ffprobe.exe im Pfad befindet und kann von dem Befehl ausgeführt werden Linie ohne ein Verzeichnis

Things Banknoten- Angabe:

  • die Datei auf einem zugeordneten Netzlaufwerk (R)
  • die Datei hat Leerzeichen im Dateinamen befindet, ist der Grund, warum ich es umgab durch Zitate.

Ich bin sicher, ich vermisse etwas Einfaches. Kann mir jemand in die richtige Richtung zeigen? Ich habe auf dieser und anderen Seiten ziemlich viel gesucht und Vorschläge gemacht.

+0

neben Schrägstriche in der Zeichenfolge zu entkommen, sollten Sie unnötige Anführungszeichen ' '"' 'um' pathToFile fallen 'und überflüssiges Argument' shell = True' im 'Popen' Anruf fallenlassen – jfs

Antwort

3

Das \ Symbol zählt als Escape-Zeichen in Python, verwenden r dass deaktivieren:

pathToFile = r"R:\T2 Output\12345--01--Some File 1--ABCD.mp4" 
+0

Das half! Jetzt sagt es" ffprobe.exe wird nicht als interner oder externer Befehl, bedienbares Programm oder Stapelakte erkannt. " Ich habe gesetzt ffprobe: Im selben Verzeichnis den vollständigen Pfad (mit einem r vor) zu ffprobe: (zB C: \ somefolder \ ffprobe), lege einen relativen Pfad vor der Name ". \ ffprobe.exe", legte eine Kopie von ffprobe.exe in C: \ Windows \ System32, und stellte sicher, dass das Verzeichnis in PATH war, und ein 'r' vor 'ffprobe.exe' für immer hinzugefügt messen. Es erkennt es immer noch nicht. Zumindest bin ich zum nächsten Fehler übergegangen. Danke für die Hilfe! – cyram

+0

@cyr laufen Probleme mit Leerzeichen in den Ordnernamen? –