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

Pet*_*elm 8 python variables shell subprocess persistent

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

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

Ale*_*lli 13

subprocess.Popen获取一个可选的命名参数env,该参数是一个用作子进程环境的字典(您将其描述为"shell变量").根据需要准备一个字典(您可以根据需要开始复制os.environ并更改)并将其传递给subprocess.Popen您执行的所有呼叫.


Siv*_*iva 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)
Run Code Online (Sandbox Code Playgroud)