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

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

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

  1. export var="value"
  2. export val2="value2"

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

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

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

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

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

产量

  1. value

猜你在找的Python相关文章