web-dev-qa-db-fra.com

Comment puis-je spécifier un répertoire de travail pour popen

Est-il possible de spécifier le répertoire d'exécution de la commande dans subprocess.Popen() de Python?

Par exemple:

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

Mon script Python se trouve dans C:\programs\python

Est-il possible d'exécuter C:\mytool\tool.exe dans le répertoire D:\test\local?

Comment définir le répertoire de travail d'un sous-processus?

174
icn

subprocess.Popenprend un argument cwd pour définir le répertoire de travail actuel; vous voudrez également échapper vos barres obliques inverses ('d:\\test\\local') ou utiliser r'd:\test\local' pour que les barres obliques inverses ne soient pas interprétées comme des séquences d'échappement par Python. Comme vous l'avez écrit, la partie \t sera traduite en un tab.

Donc, votre nouvelle ligne devrait ressembler à ceci:

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

Pour utiliser votre chemin de script Python en tant que cwd, import os et définir cwd en utilisant ceci:

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