¿Hay alguna manera de especificar el directorio de comando en ejecución en Python subprocess.Popen()
?
Por ejemplo:
Popen('c:\mytool\tool.exe', workingdir='d:\test\local')
Mi script de Python se encuentra en C:\programs\python
¿Es posible ejecutar C:\mytool\tool.exe
en el directorio D:\test\local
?
¿Cómo configuro el directorio de trabajo para un subproceso?
python
subprocess
popen
icn
fuente
fuente
Respuestas:
subprocess.Popen
toma uncwd
argumento para establecer el Directorio de trabajo actual; también querrá escapar de sus barras diagonales inversas ('d:\\test\\local'
), o usarlasr'd:\test\local'
para que Python no interprete las barras diagonales inversas como secuencias de escape. De la forma en que lo tiene escrito, la\t
parte se traducirá a a tab.Entonces, su nueva línea debería verse así:
Para usar su ruta de script Python como cwd,
import os
y defina cwd usando esto:fuente
shell=False
, no puede usar un shell integrado comocd
: es decir, intente esto en Linux con shell en ambos sentidos:subprocess.Popen("cd /tmp; pwd")
subprocess.call(["C:/Users/Bob/Some.exe"], cwd="C:/Users/Jane/")
y funciona bien