我试图在python3中执行几行bash
,并分别检查每行的状态。你知道吗
我第一次尝试从subprocess
使用gestatusoutput
,但是每一行都运行在一个独立的进程中,不与其他行通信(为了简单起见,给定的MWE包含设置一个变量,但是我打算在实际代码中做的比这更复杂-对于这个非常具体的示例,我知道os.environ
):
from subprocess import getstatusoutput as cmd
stat, out = cmd("export TEST=1")
stat, out = cmd("echo $TEST")
因此将返回:
>>> print(out)
(0, "")
然后我尝试了以下方法:
cmdline = """export TEST=1
echo $TEST"""
stat, out = cmd(cmdline)
这是可行的,但是强迫我解析输出,特别是如果我想检查第一个命令的状态(如果echo
工作,状态返回cmd
是0
之前发生的任何事情),这不是很健壮。你知道吗
我看到一些东西在使用Popen
(仍然来自subprocess
),但无法有效地使用它。你知道吗
任何帮助都将不胜感激!你知道吗
对我来说,您试图在两个进程之间共享环境变量,这是不可能的。 看起来是这样的:
你可以用操作系统环境[]要先更改当前环境(进程1变量),稍后使用fork后面的变量。你知道吗
像这样的
我做了以下工作:
launch
命令包装subprocess.Popen
来启动bash命令,它还允许我检索当前环境或传递自定义环境get_env
来解析来自上一个命令的返回,并获得环境的dict
launch
包装检索环境
(这是一个简单的版本,如果您的环境中有函数之类的东西,它可能会更复杂—这种情况时有发生。)
结果:
我可以这样使用它:
因此:
相关问题 更多 >
编程相关推荐