2024-09-27 18:09:51 发布
网友
我有一个shell脚本,其中某些参数被设置为:k.sh:
export var="value" export val2="value2"
然后我有一个python脚本,我在其中调用shell脚本并希望使用这些环境变量<1>示例:
但是我得到了KeyError 如何在Python脚本中使用这些shell变量?在
KeyError
subprocess.call在新进程中启动一个shell,该进程调用source。无法从子流程修改流程中的环境。在
subprocess.call
source
您可以源代码k.sh和运行Python one liner将os.environ的内容打印为JSON。然后在主进程中使用json.loads将输出转换回dict:
k.sh
os.environ
json.loads
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"])
收益率
如果要设置环境然后运行Python脚本,那么,设置环境并使用runner运行Python脚本:
跑步者:
#! /bin/bash . k.sh exec ex1.py
就这样。在
ex1.py:
subprocess.call
在新进程中启动一个shell,该进程调用source
。无法从子流程修改流程中的环境。在您可以源代码
k.sh
和运行Python one liner将os.environ
的内容打印为JSON。然后在主进程中使用json.loads
将输出转换回dict:收益率
^{pr2}$如果要设置环境然后运行Python脚本,那么,设置环境并使用runner运行Python脚本:
跑步者:
就这样。在
ex1.py:
^{pr2}$相关问题 更多 >
编程相关推荐