【发布时间】:2020-07-25 09:31:19
【问题描述】:
这些是我尝试运行的一些依赖命令。我的期望是将当前文件夹更改为abc 和列表文件。
同样设置z=88后,会打印z。
import subprocess
cmd_list = []
cmd_list.append("cd ./abc")
cmd_list.append("ls")
cmd_list.append("export z=88")
cmd_list.append("echo $z")
my_env = os.environ.copy()
for cmd in cmd_list:
sp = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=my_env, shell=True,text=True)
但无法获得ls 和echo $z 的任何输出
【问题讨论】:
-
命令正在子进程中运行。他们所做的更改对父 Python 进程没有任何影响。
-
导出的变量只被shell进程的子进程继承,不会回到Python进程,也不会被Python进程的其他子进程继承。
标签: python subprocess environment-variables