Eu tenho um script Python que precisa executar um programa externo, mas por algum motivo falha.
Se eu tiver o seguinte script:
import os;
os.system("C:\\Temp\\a b c\\Notepad.exe");
raw_input();
Em seguida, falha com o seguinte erro:
'C: \ Temp \ a' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote.
Se eu escapar do programa com aspas:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe"');
raw_input();
Então funciona. No entanto, se eu adicionar um parâmetro, ele deixará de funcionar novamente:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe" "C:\\test.txt"');
raw_input();
Qual é a maneira correta de executar um programa e esperar que ele seja concluído? Não preciso ler a saída dele, pois é um programa visual que faz um trabalho e depois sai, mas preciso aguardar a conclusão.
Observe também que mover o programa para um caminho não espaçado também não é uma opção.
Isso também não funciona:
import os;
os.system("'C:\\Temp\\a b c\\Notepad.exe'");
raw_input();
Observe as aspas simples / duplas trocadas.
Com ou sem um parâmetro para o Bloco de Notas aqui, ele falha com a mensagem de erro
O nome do arquivo, nome do diretório ou sintaxe do rótulo do volume está incorreto.
"C:\Program Files\GDAL\gdal_translate.exe" -ot byte -of GTIFF -scale -co PHOTOMETRIC=CMYK "cmyk-16.tif" "cmyk-8_out.tif"
. Em Python, torna-se: ["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')
ou esta:os.system('C:\\temp\\"a b c"\\Notepad.exe')