8

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

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

4

2 回答 2

13

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

于 2009-07-14T15:22:45.227 回答
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)
于 2009-08-27T09:22:32.407 回答