在Python脚本中使用shell变量不起作用

前端之家收集整理的这篇文章主要介绍了在Python脚本中使用shell变量不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个shell脚本,其中某些参数设置如下:
k.sh:

export var="value"
export val2="value2"

然后我有一个python脚本,我在调用shell脚本,并希望使用这些环境变量
ex1.py:

import subprocess
import os
subprocess.call("source k.sh",shell=True)
print os.environ["var"]

但是我得到了一个KeyError
如何在Python脚本中使用这些shell变量?

最佳答案
您可以获取k.sh并运行Python one-liner以将os.environ的内容打印为JSON.然后使用json.loads将该输出转换回主进程中的di​​ct:

import subprocess
import os
import json
PIPE = subprocess.PIPE
output = subprocess.check_output(
    ". ~/tmp/k.sh && python -c 'import os,json; print(json.dumps(dict(os.environ)))'",shell=True)
env = json.loads(output)
print(env["var"])

产量

value

猜你在找的Python相关文章