パスにスペースを含む Python からの外部プログラムの実行
Python では、os.system 関数を使用して外部プログラムを実行できます。ただし、スペースを含むパスを使用してプログラムを実行すると、問題が発生する可能性があります。この記事では、この問題を調査し、subprocess モジュールを使用した解決策を提供します。
os.system の課題
os.system 関数は、入力文字列をコマンドとして解釈します。シェルによって実行されます。プログラムへのパスにスペースが存在する場合、シェルはスペースをコマンド区切り文字として解釈し、「コマンドが見つかりません」などのエラーを引き起こす可能性があります。
エスケープによるスペースの処理
プログラム パスを二重引用符でエスケープすると、問題が解決する場合があります。ただし、コマンドにパラメータを追加すると、コマンドが再び壊れる可能性があります。
同じ引用符、異なる構文
プログラム パスを区切るときに一重引用符と二重引用符を入れ替える (例: 「'C:Tempa b cNotepad.exe'」) では問題は解決せず、「ファイル名の構文が正しくありません」エラーが発生する可能性があります。
サブプロセスを入力してください
Toシェルエスケープの複雑さを回避するには、サブプロセスモジュールがより堅牢なソリューションを提供します。 subprocess.call 関数は、文字列ではなく引数のリストを受け取ります。引数は、リスト内の空白で簡単に区切ることができます。
サブプロセスを使用したサンプル スクリプト
次のスクリプトは、サブプロセスを使用してパラメータを指定してメモ帳を実行します。
<code class="python">import subprocess subprocess.call(['C:\Temp\a b c\Notepad.exe', 'C:\test.txt'])</code>
このスクリプトはメモ帳を正しく実行し、パス内のスペースによる構文の問題が発生することなく完了するのを待ちます。
以上がPython からパスにスペースを含む外部プログラムを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。