[英]Python get env from finished subprocess
python3.9
所以我有一个像这样的子流程
m_env = os.environ.copy()
process = subprocess.Popen(
['export', 'TEST=test'],
env=m_env,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True
)
result = process.wait()
new_env = process.getenv() #how to get this so the new_env has the 'TEST=test' in it.
现在子进程本身正在修改环境,我想知道如何从进程中获取这个修改后的环境,示例使用导出,但是我运行的脚本可能会更改或添加其他环境变量,所以我想获得整个环境。
您可以打印子进程shell中的所有环境变量,但是您必须在之后解析数据。
import os
import subprocess
def main():
m_env = os.environ.copy()
process = subprocess.Popen(
['export TEST=test && export'],
env=m_env,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True
)
process.wait()
print(process.stdout.read()) # all environment variables
if __name__ == '__main__':
main()
编辑:将环境打印 function 从printenv
(解析时可能不明确)更改为export
。 感谢查尔斯·达菲
@Pavel Hamerník 发布的解决方案是起点。 在@Charles Duffy 评论讨论的指导下,以下解决方案最适合我的实施。
import os
import subprocess
def main():
m_env = os.environ.copy()
process = subprocess.Popen(
['/bin/bash /path/script.sh && export > /tmp/env.txt'],
env=m_env,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True
)
process.wait()
print(process.stdout.read()) # read the stdout from script
if __name__ == '__main__':
main()
注意:导出 output 被定向到/tmp/
中的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.