在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的opencv还有face_r...
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Poolin...
记得大一学Python的时候,有一个题目是判断一个数是否是复数...
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic ...
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic v...
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic ...