Python:子进程中的持久shell变量

时间:2009-07-14 15:19:21

标签: python shell variables subprocess persistent

我正在尝试使用Pythons子进程模块执行一系列命令,但是我需要在运行它们之前使用export设置shell变量。当然shell似乎并不持久,所以当我稍后运行命令时,那些shell变量就会丢失。

有什么方法可以解决这个问题吗?我可以创建一个/ bin / sh进程,但是如何在该进程下运行命令的退出代码?

2 个答案:

答案 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)