说我有一个yaml配置文件,例如:
test1:
minVolt: -1
maxVolt: 1
test2:
curr: 5
volt: 5
我可以使用:
将文件读入pythonimport yaml
with open("config.yaml", "r") as f:
config = yaml.load(f)
然后我可以用
访问变量config['test1']['minVolt']
样式方面,从配置文件中使用变量的最佳方法是什么?我将在多个模块中使用变量。如果我只是如上所示访问变量,如果重命名某些内容,我将需要重命名该变量的每个实例。
只是想知道在不同模块中使用配置文件中的变量的最佳或常见做法。
答案 0 :(得分:2)
你可以这样做:
class Test1Class:
def __init__(self, raw):
self.minVolt = raw['minVolt']
self.maxVolt = raw['maxVolt']
class Test2Class:
def __init__(self, raw):
self.curr = raw['curr']
self.volt = raw['volt']
class Config:
def __init__(self, raw):
self.test1 = Test1Class(raw['test1'])
self.test2 = Test2Class(raw['test2'])
config = Config(yaml.safe_load("""
test1:
minVolt: -1
maxVolt: 1
test2:
curr: 5
volt: 5
"""))
然后使用以下命令访问您的值:
config.test1.minVolt
重命名YAML文件中的值时,只需在一个位置更改类。
注意: PyYaml还允许您直接将YAML反序列化为自定义类。但是,要使其工作,您需要向YAML文件添加标记,以便PyYaml知道要反序列化的类。我希望你不要让你的YAML输入更复杂。
答案 1 :(得分:0)
请参见Munch,Load YAML as nested objects instead of dictionary in Python
import yaml
from munch import munchify
c = munchify(f)yaml.safe_load(…))
print(c.test1.minVolt)
# -1
# Or
f = open(…)
c = Munch.fromYAML(f)