2013-10-11 9 views
6

Ho il seguente codicePython Popen Impossibile trovare il file specificato

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) 

ottengo l'errore:

[Error 2] The system cannot find the file specified 

Quello che ho cercato:

  • Cambiare shell = True per shell = False
  • Combinare il comando in una stringa singola invece di utilizzare una lista (I even pri nto su schermo, e posso copiare e incollare in un prompt dei comandi dove il file viene eseguito e fornisce l'output previsto (nessun errore)
  • Mi sono accertato che ffprobe.exe si trovi nel PERCORSO e possa essere eseguito dal comando linea senza specificare una directory

cose da notare:

  • il file si trova in un'unità di rete mappata (R)
  • il file ha spazi nel nome del file, è per questo che lo circondava da citazioni.

Sono sicuro che mi manca qualcosa di semplice. Qualcuno può indicarmi la giusta direzione? Ho fatto un sacco di ricerche su questo sito e su altri e ho provato suggerimenti.

+0

oltre a fughe di backslash nella stringa, si dovrebbe cadere citazioni inutili ' '"' 'intorno' pathtofile 'e rilasciare argomento non necessario' shell = True' nella chiamata 'Popen'. – jfs

risposta

3

Il simbolo \ conta come un carattere di escape in python, utilizzare r a sua volta che fuori:

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

Questo ha aiutato! Ora dice" ffprobe.exe non è riconosciuto come comando interno o esterno, programma eseguibile o file batch. " Ho messo ffprobe: nella stessa directory, metti il ​​percorso completo (con una r in primo piano) in ffprobe: (ad es. C: \ somefolder \ ffprobe), metti un percorso relativo di fronte a il nome ". \ ffprobe.exe", inserire una copia di ffprobe.exe in C: \ Windows \ System32 e assicurarsi che la directory fosse in PATH e aggiungere una "r" di fronte a "ffprobe.exe" per una buona misurare. Ancora non lo riconosce. Almeno mi sono trasferito al prossimo errore però. Grazie per l'aiuto! – cyram

+0

@cyram stai riscontrando problemi con gli spazi nei nomi delle cartelle? –