我正在尝试使用Pythons子进程模块执行一系列命令,但是我需要在运行它们之前使用export设置shell变量。当然shell似乎并不持久,所以当我稍后运行命令时,那些shell变量就会丢失。
有什么方法可以解决这个问题吗?我可以创建一个/ bin / sh进程,但是如何在该进程下运行命令的退出代码?
答案 0 :(得分:13)
subprocess.Popen
接受一个可选的命名参数env
,它是一个用作子进程环境的字典(你所描述的是“shell变量”)。根据需要准备一个词典(您可以从os.environ
的副本开始并根据需要进行更改)并将其传递给您执行的所有subprocess.Popen
个来电。
答案 1 :(得分:5)
current_env=environ.copy()
current_env["XXX"] = "SOMETHING" #If you want to change some env variable
subProcess.Popen("command_n_args", env=current_env)