控制子进程命令的环境

时间:2017-10-26 13:07:38

标签: python shell subprocess environment

我正在尝试使用

从特定的绝对路径启动脚本
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所在文件夹的两倍。 因此,我了解每次调用check_output时都会重新创建shell中的环境变量。

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

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

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

那么如何使用otherscript.py MYABSPATH个参数在foo中运行bar

2 个答案:

答案 0 :(得分:4)

你可以使用cwd:

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

答案 1 :(得分:2)

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

import os
from subprocess import check_output

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