gpt4 book ai didi

python - configparser: 带有省略值的解析错误

转载 作者:行者123 更新时间:2023-11-28 17:35:25 26 4
gpt4 key购买 nike

我正在使用 Python 的老式 configparser模块从文件系统读取配置文件。

为了检查用户提供的配置文件是否使用正确的“语法”,我将所有部分键和子键与引用配置文件 ref_config.ini 进行比较,其中包含所有允许的部分键和子键值(value)观。

解析用户特定文件没什么大不了的,而且效果很好。但是,阅读引用配置会导致 ParsingError如下:

ParsingError: Source contains parsing errors: 'ref_config.ini'
[line 2]: 'rotations_to_simulate\n'
[line 3]: 'number_of_segments\n'
[line 4]: 'material_data\n'
[line 7]: 'rpm\n'

ref_config.ini 文件包含以下几行:

[GENERAL DATA]
rotations_to_simulate
number_of_segments
material_data

[TECHNICAL DATA]
rpm

要阅读上面提到的配置文件,我使用以下代码:

#!/usr/bin/env python3
# coding: utf-8

import configparser
import os.path

def read_ref_config():
config = configparser.ConfigParser()
if not os.path.isfile('ref_config.ini'):
return False, None
else:
config.read('ref_config.ini')
return True, config

但是,由于 docs,在配置文件中省略值不应导致 ParsingError告诉:

Values can be omitted, in which case the key/value delimiter may also be left out.

[No Values]
key_without_value
empty string value here =

更新:

我只是复制并粘贴给定 example from the docs 的内容进入我的 ref_config.ini 文件并得到类似的 ParsingError,NoValue-keys 不包含任何空格:

ParsingError: Source contains parsing errors: 'ref_config.ini'
[line 20]: 'key_without_value\n'

最佳答案

简单的方法:

configparser.ConfigParser(allow_no_value=True)

根据 configparse docs

>>> import configparser

>>> sample_config = """
... [mysqld]
... user = mysql
... pid-file = /var/run/mysqld/mysqld.pid
... skip-external-locking
... old_passwords = 1
... skip-bdb
... # we don't need ACID today
... skip-innodb
... """
>>> config = configparser.ConfigParser(allow_no_value=True)
>>> config.read_string(sample_config)

>>> # Settings with values are treated as before:
>>> config["mysqld"]["user"]
'mysql'

>>> # Settings without values provide None:
>>> config["mysqld"]["skip-bdb"]

>>> # Settings which aren't specified still raise an error:
>>> config["mysqld"]["does-not-exist"]
Traceback (most recent call last):
...
KeyError: 'does-not-exist'

关于python - configparser: 带有省略值的解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31029768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com