2009-07-14 46 views
8

我试图执行一系列使用Pythons子进程模块的命令,但是我需要在运行它们之前用导出设置shell变量。当然,shell看起来并不是持久的,所以当我稍后运行一个命令时,这些shell变量会丢失。Python:子进程中的持久化shell变量

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

回答

13

subprocess.Popen需要一个可选的命名参数env这是一个字典,用作子进程的环境(您称之为“shell变量”)。根据需要准备字典(您可以从os.environ的副本开始,并根据需要进行更改),并将其传递给您执行的所有subprocess.Popen调用。

+0

完美,谢谢。 – PeterBelm 2009-07-14 15:42:29

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)