Ho uno script Python che deve eseguire un programma esterno, ma per qualche ragione fallisce.
Se ho il seguente script:
import os;
os.system("C:\\Temp\\a b c\\Notepad.exe");
raw_input();
Quindi non riesce con il seguente errore:
'C: \ Temp \ a' non è riconosciuto come comando interno o esterno, programma eseguibile o file batch.
Se sfuggo al programma con le virgolette:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe"');
raw_input();
Quindi funziona. Tuttavia, se aggiungo un parametro, smette di funzionare di nuovo:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe" "C:\\test.txt"');
raw_input();
Qual è il modo giusto per eseguire un programma e attendere che venga completato? Non ho bisogno di leggere l'output da esso, poiché è un programma visivo che fa un lavoro e poi esce, ma devo aspettare che venga completato.
Nota anche che lo spostamento del programma su un percorso non spaziato non è un'opzione.
Questo non funziona neanche:
import os;
os.system("'C:\\Temp\\a b c\\Notepad.exe'");
raw_input();
Nota le virgolette singole / doppie scambiate.
Con o senza un parametro per Blocco note qui, non riesce con il messaggio di errore
La sintassi del nome file, della directory o dell'etichetta del volume non è corretta.
"C:\Program Files\GDAL\gdal_translate.exe" -ot byte -of GTIFF -scale -co PHOTOMETRIC=CMYK "cmyk-16.tif" "cmyk-8_out.tif"
. In Python, diventa: ["C:\\Program Files\\GDAL\\gdal_translate.exe", "-ot", "byte", "-scale", "-co", "PHOTOMETRIC=CMYK", "input_cmyk-16.tif", "output_cmyk-8.tif"]
.
os.system(r'C:\temp\"a b c"\Notepad.exe')
o questo:os.system('C:\\temp\\"a b c"\\Notepad.exe')