相关疑难解决方法(0)

547
推荐指数
6
解决办法
50万
查看次数

使用Python中的设置文件的最佳做法是什么?

我有一个命令行脚本,我运行了很多参数.我现在已经到了一个我有太多参数的地方,我想也有一些字典形式的参数.

因此,为了简化操作,我希望使用设置文件来运行脚本.我真的不知道用什么库来解析文件.这样做的最佳做法是什么?我当然可以自己敲一些东西,但是如果有一些库,那我就是耳朵.

一些"要求":

  • 而不是使用pickle我希望它是一个可以轻松阅读和编辑的直接文本文件.
  • 我希望能够在其中添加类似字典的数据,即应该支持某种形式的嵌套.

一个简化的伪示例文件:

truck:
    color: blue
    brand: ford
city: new york
cabriolet:
    color: black
    engine:
        cylinders: 8
        placement: mid
    doors: 2
Run Code Online (Sandbox Code Playgroud)

python settings configuration parsing yaml

308
推荐指数
4
解决办法
24万
查看次数

如何在文件中以YAML格式写入数据?

我需要使用Python将以下数据写入yaml文件:

{A:a, B:{C:c, D:d, E:e}} 
Run Code Online (Sandbox Code Playgroud)

即字典中的字典.我怎样才能做到这一点?

python formatting yaml pyyaml

111
推荐指数
2
解决办法
18万
查看次数

在所有节点完成加载后,有没有办法使用PyYAML construct_mapping构造对象?

我试图在python中创建一个yaml序列,创建一个自定义的python对象.该对象需要使用之后解构的dicts和列表构建__init__.但是,似乎construct_mapping函数不构造嵌入序列(列表)和dicts的整个树.
考虑以下:

import yaml

class Foo(object):
    def __init__(self, s, l=None, d=None):
        self.s = s
        self.l = l
        self.d = d

def foo_constructor(loader, node):
    values = loader.construct_mapping(node)
    s = values["s"]
    d = values["d"]
    l = values["l"]
    return Foo(s, d, l)
yaml.add_constructor(u'!Foo', foo_constructor)

f = yaml.load('''
--- !Foo
s: 1
l: [1, 2]
d: {try: this}''')

print(f)
# prints: 'Foo(1, {'try': 'this'}, [1, 2])'
Run Code Online (Sandbox Code Playgroud)

这工作得很好,因为f持有的引用ld对象,这实际上是充满了数据之后Foo对象被创建.

现在,让我们做一些更复杂的smidgen:

class Foo(object):
    def __init__(self, …
Run Code Online (Sandbox Code Playgroud)

python yaml pyyaml

16
推荐指数
2
解决办法
1万
查看次数

在python中读取YAML配置文件并使用变量

说我有一个yaml配置文件,例如:

test1:
    minVolt: -1
    maxVolt: 1
test2:
    curr: 5
    volt: 5
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令将文件读取到python中:

import yaml

with open("config.yaml", "r") as f:
    config = yaml.load(f)
Run Code Online (Sandbox Code Playgroud)

然后我可以使用

config['test1']['minVolt']
Run Code Online (Sandbox Code Playgroud)

在样式方面,使用配置文件中变量的最佳方法是什么?我将在多个模块中使用变量。如果我仅按上述方式访问变量,则如果重命名了某些内容,则需要重命名该变量的每个实例。

只是想知道在不同模块中使用配置文件中的变量的最佳或通用做法是什么。

python yaml config

6
推荐指数
1
解决办法
4071
查看次数

标签 统计

python ×5

yaml ×5

pyyaml ×2

config ×1

configuration ×1

formatting ×1

parsing ×1

settings ×1