web-dev-qa-db-ja.com

popenの作業ディレクトリを指定するにはどうすればよいですか

Pythonのsubprocess.Popen()でコマンドの実行ディレクトリを指定する方法はありますか?

例えば:

Popen('c:\mytool\tool.exe', workingdir='d:\test\local')

PythonスクリプトはC:\programs\pythonにあります

ディレクトリC:\mytool\tool.exeD:\test\localを実行できますか?

サブプロセスの作業ディレクトリを設定するにはどうすればよいですか?

174
icn

subprocess.Popencwd引数を取る は、現在の作業ディレクトリを設定します。また、バックスラッシュ('d:\\test\\local')をエスケープするか、r'd:\test\local'を使用して、バックスラッシュがPythonによってエスケープシーケンスとして解釈されないようにすることもできます。あなたが書いた方法で、\t部分は tab

したがって、新しい行は次のようになります。

subprocess.Popen(r'c:\mytool\tool.exe', cwd=r'd:\test\local')

Pythonスクリプトパスをcwdとして使用するには、import osを使用し、これを使用してcwdを定義します。

os.path.dirname(os.path.realpath(__file__)) 
251
Mark Rushakoff