Existe-t-il un moyen de spécifier le répertoire en cours d'exécution de la commande dans Python subprocess.Popen()
?
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?
Réponses:
subprocess.Popen
prend uncwd
argument pour définir le répertoire de travail actuel; vous voudrez également échapper vos contre-obliques ('d:\\test\\local'
), ou utiliserr'd:\test\local'
pour que les contre-obliques ne soient pas interprétées comme des séquences d'échappement par Python. La manière dont vous l'avez écrite, la\t
partie sera traduite en un fichier tab.Donc, votre nouvelle ligne devrait ressembler à:
Pour utiliser votre chemin de script Python comme cwd
import os
et définir cwd en utilisant ceci:la source
shell=False
, vous ne pouvez pas utiliser un shell intégré tel quecd
: c'est-à-dire essayez ceci sous Linux avec le shell dans les deux sens:subprocess.Popen("cd /tmp; pwd")
subprocess.call(["C:/Users/Bob/Some.exe"], cwd="C:/Users/Jane/")
et cela fonctionne bien