- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 ConfigObj 和 Validator 来解析 python 中的配置文件。虽然我非常喜欢这个工具,但我在使用 configSpec 文件进行验证时遇到了问题。我使用 option() configSpec 类型强制从受控词汇表中选择值:
output_mode = option("Verbose", "Terse", "Silent")
我希望我的代码知道用户何时输入简历中没有的选项。根据我的喜好,验证器似乎只说明哪个配置键验证失败,但不说明失败的原因:
from configobj import ConfigObj, flatten_errors
from validate import Validator
config = ConfigObj('config.ini', configspec='configspec.ini')
validator = Validator()
results = config.validate(validator)
if results != True:
for (section_list, key, _) in flatten_errors(config, results):
if key is not None:
print 'The "%s" key in the section "%s" failed validation' % (key, ', '.join(section_list))
else:
print 'The following section was missing:%s ' % ', '.join(section_list)
该代码片段有效,但 key 验证失败的原因有很多,从不在整数范围内到不在 CV 中。我不想询问 key 名称并根据该 key 的失败情况引发不同类型的异常。是否有更简洁的方法来处理特定类型的验证错误?
长期 stackoverflow 读者,第一次发帖:-)
最佳答案
更新:我认为这就是我想做的。关键是 config obj 将错误存储为异常,然后可以根据 ValidateError 子类的错误进行检查。然后,您只需对每个子类进行一次检查,而不是对每个参数值进行一次检查。如果验证失败时验证只是抛出异常可能会更好,但也许您会失去其他功能。
self.config = configobj.ConfigObj(configFile, configspec=self.getConfigSpecFile())
validator = Validator()
results = self.config.validate(validator, preserve_errors=True)
for entry in flatten_errors(self.config, results):
[sectionList, key, error] = entry
if error == False:
msg = "The parameter %s was not in the config file\n" % key
msg += "Please check to make sure this parameter is present and there are no mis-spellings."
raise ConfigException(msg)
if key is not None:
if isinstance(error, VdtValueError):
optionString = self.config.configspec[key]
msg = "The parameter %s was set to %s which is not one of the allowed values\n" % (key, self.config[key])
msg += "Please set the value to be in %s" % optionString
raise ConfigException(msg)
OptionString 只是一个形式为 option("option 1", "option 2") 的字符串,而不是一个列表,因此为了让它看起来不错,您需要获取 () 中的子字符串。
关于python - ConfigObj 选项验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345879/
我有几个关于 configobj 的问题,我很乐意尝试用于此项目。 第一个问题是,我如何列出一个很长的 list ?假设我已经在规范文件中声明了。 val = 字符串列表 现在我想做 值=一, 二,
我一直在查看 ConfigObj,但遇到了验证和单元素列表方面的问题。假设我有一个如下所示的配置规范: config_specification = """[Data] [[__many__]]
我正在使用 ConfigObj 和 Validator 来解析 python 中的配置文件。虽然我非常喜欢这个工具,但我在使用 configSpec 文件进行验证时遇到了问题。我使用 option()
我使用 ConfigObj 来解析格式的配置文件: [APACHE] init_script= ... [TOMCAT] [[TOMCAT1]] init_script = [
我正在尝试使用 ConfigObj 通过函数写入配置文件。 #!/usr/bin/evn python3.5 import configobj def createConfig(path):
我正在使用 configobj 读取配置文件,如下所示。 [default] PROP1 = "12345" PROP2 = "abcde" [section1] PROP1
我在迭代 configObj 对象中的部分时遇到一些问题。我想要做的是迭代一个部分中的子部分。当我运行我的代码时,出现错误“TypeError:'Section' object is not call
如果我运行以下脚本: from configobj import ConfigObj config = ConfigObj() config.filename = 'test.cfg' config[
有人可以指导我安装 python configobj 模块吗?我是从here下载的 但是在安装过程中会报错 except Exception, e: ^ SyntaxE
我正在使用 ConfigObj 5.0.6 来保存许多用户定义的值,其中一些是嵌套的。我使用 local.ini 来取代典型值。没有前端,因此用户可以根据需要编辑配置。为了使这更容易和更直观,有一些值
我有一个 configobj 文件,我可以从中读取,但是我想使用 as_bool 方法从文件中读取一些值。目前我正在使用以下代码并惨遭失败! configFile = 'config.conf' co
我想对 configobj 的值同时使用解析时间和运行时插值配置文件。在 Python 中进行简单字符串插值的最简单方法是 "%(foo)s"% somedict。不幸的是 configobj 使用相
为 Python 程序创 build 置文件、内置模块 (ConfigParser) 或独立项目 (ConfigObj) 哪个更好? 最佳答案 我最近从 configparser 切换到 config
我一直想通过从简单的文本文件中读取变量来定义 Python 中的变量。因此,我阅读了 ConfigParser、ConfigObj、PyYaml 和 JSON 等内容。目前我对 ConfigObj 和
如何在 ConfigObj 中编写注释? 我正在使用 python 2.4.3 和 ConfigObj 4.7 我在 ConfigObj 文档中没有看到任何方法。 最佳答案 经过一些测试,我发现你也可
我正在尝试安装模块 ConfigObj。我做的一切都是正确的 在 CMD 中输入: python setup.py install 但告诉我一个回溯(错误) > C:\Users\Frederik\D
我正在 Python 中使用 ConfigObj 来读取我的配置文件。我需要从配置文件中读取列表列表。这是我到目前为止所尝试过的: 章节和小节 - 创建字典,而不是列表 list_of_lists =
我正在尝试使用 StringIO 来提供 ConfigObj。我想在我的单元测试中执行此操作,以便我可以根据我想在配置对象中测试的内容动态模拟配置"file"。 我在配置模块中处理了一大堆事情(我正在
我正在使用 ConfigObj在带有模板样式插值的 python 中。通过 ** 打开我的配置字典似乎没有进行插值。这是功能还是错误?有什么好的解决方法吗? $ cat my.conf foo = /
为 Python 程序创 build 置文件,内置模块(ConfigParser)或独立项目(ConfigObj),或使用 YAML 数据序列化格式,哪个更好?我听说 ConfigObj 比 Conf
我是一名优秀的程序员,十分优秀!