哪个方法读取yaml文件和ini的读取方法相同return?
Which method to read yaml file and have the same return of the read method of ini?
我正在做一个项目,我想将 .ini 配置文件更改为 .yaml。在一个函数中,我在读取 .ini 文件之前有 return,现在我希望它具有与 .yaml 文件相同的 return 类型。我该怎么做呢?
有人可以向我解释一下这是什么类型的 return 吗?
到.yaml文件
stream = file('file.yaml', 'r')
return yaml.load(stream) ????
return yaml.dump(stream) ???? ????
到 .ini 文件
config = ConfigParser.ConfigParser()
config.read('file.ini')
return config
如果我打印 config
,我有这个:
ConfigParser.ConfigParser instance at 0x000000000124FE08
既然你做了config = ConfigParser.ConfigParser()
,那是肯定的
config
是一个 ConfigParser
实例。那有各种特殊的方法等等
您的程序将假定能够调用。
如果您不想更改程序的其余部分,您应该设置 YAML 配置文件
在根部有一个映射,其键是 INI 文件中的部分名称,
并且值再次映射表示每个部分的键值对:
section1:
key1: value1
key2: value2
section2:
key1: value3
key3: value4
然后加载该 YAML 文件并将生成的数据结构转换为 ConfigParser 实例
然后您可以将其用作从 INI 文件读取的 ConfigParser:
import sys
import ruamel.yaml
from configparser import ConfigParser
yaml = ruamel.yaml.YAML(typ='safe')
with open('file.yaml', 'r') as stream:
data = yaml.load(stream)
config = ConfigParser()
config.read_dict(data)
config.write(sys.stdout)
给出:
[section1]
key1 = value1
key2 = value2
[section2]
key1 = value3
key3 = value4
因此 config
(假设您的 file.yaml
有意义),可以传递给程序的其余部分。
请注意:
config.write()
只是为了显示结果是一个 ConfigParser
实例,
在最后的程序中你不需要那个。
您的 YAML 加载示例不会关闭输入流,这不是好的做法。使用 with
语句或将 pathlib.Path
传递给 yaml.load
:
from pathlib import Path
file_name = Path('file.yaml')
yaml.load(file_name)
可以直接加载到ConfigParser
实例中
在 YAML 文件中标记根级别映射并提供
适当的标签处理,但我认为这不值得。您的
把时间花在改变程序的其余部分上会更好
假设部分处理 data
(二级字典
结构)。
我正在做一个项目,我想将 .ini 配置文件更改为 .yaml。在一个函数中,我在读取 .ini 文件之前有 return,现在我希望它具有与 .yaml 文件相同的 return 类型。我该怎么做呢? 有人可以向我解释一下这是什么类型的 return 吗?
到.yaml文件
stream = file('file.yaml', 'r') return yaml.load(stream) ???? return yaml.dump(stream) ???? ????
到 .ini 文件
config = ConfigParser.ConfigParser() config.read('file.ini') return config
如果我打印 config
,我有这个:
ConfigParser.ConfigParser instance at 0x000000000124FE08
既然你做了config = ConfigParser.ConfigParser()
,那是肯定的
config
是一个 ConfigParser
实例。那有各种特殊的方法等等
您的程序将假定能够调用。
如果您不想更改程序的其余部分,您应该设置 YAML 配置文件 在根部有一个映射,其键是 INI 文件中的部分名称, 并且值再次映射表示每个部分的键值对:
section1:
key1: value1
key2: value2
section2:
key1: value3
key3: value4
然后加载该 YAML 文件并将生成的数据结构转换为 ConfigParser 实例 然后您可以将其用作从 INI 文件读取的 ConfigParser:
import sys
import ruamel.yaml
from configparser import ConfigParser
yaml = ruamel.yaml.YAML(typ='safe')
with open('file.yaml', 'r') as stream:
data = yaml.load(stream)
config = ConfigParser()
config.read_dict(data)
config.write(sys.stdout)
给出:
[section1]
key1 = value1
key2 = value2
[section2]
key1 = value3
key3 = value4
因此 config
(假设您的 file.yaml
有意义),可以传递给程序的其余部分。
请注意:
config.write()
只是为了显示结果是一个ConfigParser
实例, 在最后的程序中你不需要那个。您的 YAML 加载示例不会关闭输入流,这不是好的做法。使用
with
语句或将pathlib.Path
传递给yaml.load
:from pathlib import Path file_name = Path('file.yaml') yaml.load(file_name)
可以直接加载到
ConfigParser
实例中 在 YAML 文件中标记根级别映射并提供 适当的标签处理,但我认为这不值得。您的 把时间花在改变程序的其余部分上会更好 假设部分处理data
(二级字典 结构)。