控制子进程命令的环境



我正在尝试使用

from subprocess import check_output

如果我运行:

# myscript.py
check_command=['pwd']
ret=check_output(check_command,shell=True)
print(ret)
path_set_command=['cd MYABSPATH']
ret=check_output(path_set_command,shell=True)
ret=check_output(check_command,shell=True)
print(ret)

它打印的myscript.py所在的文件夹的两倍。因此,我知道每次调用 shell 时都会重新创建 shell 中的环境变量 check_output .

如何使用check_ouput设置命令的路径?我试图让我的命令作为

ret=check_output(['cd MYABSPATH; ./otherscript.py'] ,shell=True)

但是,如果我将参数传递给我的otherscript.py(将它们作为额外项目附加到包含命令的列表中),则它们不会正确转发。

那么,我如何使用foo bar参数在MYABSPATH中运行otherscript.py呢?

你可以使用 cwd:

foo = check_output("pwd", cwd="/MYABSPATH", shell=True)

在启动脚本之前,使用 os 模块更改目录。然后你应该能够访问你的脚本

import os
from subprocess import check_output
os.chdir('MYABSPATH')
ret = check_output(path_set_command, shell=True)
print(ret)

最新更新