Ich habe ein Python-Skript, das ein externes Programm ausführen muss, aber aus irgendeinem Grund fehlschlägt.
Wenn ich folgendes Skript habe:
import os;
os.system("C:\\Temp\\a b c\\Notepad.exe");
raw_input();
Dann schlägt es mit folgendem Fehler fehl:
'C: \ Temp \ a' wird nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt.
Wenn ich dem Programm mit Anführungszeichen entkomme:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe"');
raw_input();
Dann funktioniert es. Wenn ich jedoch einen Parameter hinzufüge, funktioniert er nicht mehr:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe" "C:\\test.txt"');
raw_input();
Was ist der richtige Weg, um ein Programm auszuführen und auf dessen Abschluss zu warten? Ich muss die Ausgabe nicht lesen, da es sich um ein visuelles Programm handelt, das einen Job erledigt und dann einfach beendet wird, aber ich muss warten, bis es abgeschlossen ist.
Beachten Sie auch, dass das Verschieben des Programms in einen Pfad ohne Abstand ebenfalls keine Option ist.
Dies funktioniert auch nicht:
import os;
os.system("'C:\\Temp\\a b c\\Notepad.exe'");
raw_input();
Beachten Sie die vertauschten einfachen / doppelten Anführungszeichen.
Mit oder ohne Parameter für Notepad schlägt hier die Fehlermeldung fehl
Die Syntax für Dateiname, Verzeichnisname oder Datenträgerbezeichnung ist falsch.
"C:\Program Files\GDAL\gdal_translate.exe" -ot byte -of GTIFF -scale -co PHOTOMETRIC=CMYK "cmyk-16.tif" "cmyk-8_out.tif"
. In Python wird es : ["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')
oder dies:os.system('C:\\temp\\"a b c"\\Notepad.exe')