我有一个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将该输出转换回主进程中的dict:
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