Tengo un script de Python que necesita ejecutar un programa externo, pero por alguna razón falla.
Si tengo el siguiente script:
import os;
os.system("C:\\Temp\\a b c\\Notepad.exe");
raw_input();
Entonces falla con el siguiente error:
'C: \ Temp \ a' no se reconoce como un comando interno o externo, programa operativo o archivo por lotes.
Si escapo del programa con comillas:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe"');
raw_input();
Entonces funciona. Sin embargo, si agrego un parámetro, deja de funcionar nuevamente:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe" "C:\\test.txt"');
raw_input();
¿Cuál es la forma correcta de ejecutar un programa y esperar a que se complete? No necesito leer el resultado, ya que es un programa visual que hace un trabajo y luego simplemente sale, pero necesito esperar a que se complete.
También tenga en cuenta, mover el programa a una ruta no espaciada tampoco es una opción.
Esto tampoco funciona:
import os;
os.system("'C:\\Temp\\a b c\\Notepad.exe'");
raw_input();
Tenga en cuenta las comillas simples / dobles intercambiadas.
Con o sin un parámetro para el Bloc de notas aquí, falla con el mensaje de error
El nombre de archivo, el nombre del directorio o la sintaxis de la etiqueta de volumen es incorrecta.
"C:\Program Files\GDAL\gdal_translate.exe" -ot byte -of GTIFF -scale -co PHOTOMETRIC=CMYK "cmyk-16.tif" "cmyk-8_out.tif"
. En Python, se convierte en: ["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 esto:os.system('C:\\temp\\"a b c"\\Notepad.exe')