外部プログラムを実行する必要があるPythonスクリプトがありますが、何らかの理由で失敗します。
次のスクリプトがある場合:
import os;
os.system("C:\\Temp\\a b c\\Notepad.exe");
raw_input();
その後、次のエラーで失敗します。
'C:\ Temp \ a'は、内部または外部のコマンド、操作可能なプログラム、またはバッチファイルとして認識されません。
プログラムを引用符でエスケープする場合:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe"');
raw_input();
その後、動作します。ただし、パラメーターを追加すると、再び機能しなくなります。
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe" "C:\\test.txt"');
raw_input();
プログラムを実行し、それが完了するのを待つ正しい方法は何ですか?これは、ジョブを実行して終了するだけのビジュアルプログラムであるため、出力を読み取る必要はありませんが、完了するまで待つ必要があります。
また、プログラムをスペースのないパスに移動することもできません。
これも機能しません:
import os;
os.system("'C:\\Temp\\a b c\\Notepad.exe'");
raw_input();
入れ替えられた一重/二重引用符に注意してください。
ここでメモ帳へのパラメーターの有無にかかわらず、エラーメッセージで失敗します
ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません。
"C:\Program Files\GDAL\gdal_translate.exe" -ot byte -of GTIFF -scale -co PHOTOMETRIC=CMYK "cmyk-16.tif" "cmyk-8_out.tif"
。Pythonでは、次のようになります["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')
またはthis:os.system('C:\\temp\\"a b c"\\Notepad.exe')