python - 无法读取包含 [] 的配置文件部分

标签 python

已编辑帖子

我无法读取包含 []... 的配置文件部分,例如,如果 ini 文件中的任何部分类似于 [c:\\temp\\foo[1].txt] 比我的脚本无法读取该部分..

config.read(dst_bkp)
for i in config.sections():
    config.get(i,'FileName') 

谢谢, 维涅什

最佳答案

假设您使用 ConfigParser.RawConfigParser 模块的内置子类:不支持此功能。即使在newest revision ,节标题的正则表达式只是

SECTCRE = re.compile(
    r'\['                                 # [
    r'(?P<header>[^]]+)'                  # very permissive!
    r'\]'                                 # ]
    )

没有转义机制,节标题仅在第一个右括号处结束。您应该只使用没有“特殊字符”的简单字符串作为标题名称,而不是像文件名这样的任意字符串。

编辑:关于 Python 3,equivalent code已进行了一些重组,但正则表达式是相同的:

_SECT_TMPL = r"""
    \[                                 # [
    (?P<header>[^]]+)                  # very permissive!
    \]                                 # ]
    """

编辑2:您可以按照其他解决方案中的建议创建自己的子类,或者直接修补RawConfigParser:

import ConfigParser
import re
ConfigParser.RawConfigParser.SECTCRE = re.compile(r"\[(?P<header>.+)\]")

但是,我建议不要执行任何这些操作并避免使用方括号。如果节标题中有括号,您的配置文件可能无法移植。

关于python - 无法读取包含 [] 的配置文件部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3448505/

相关文章:

python - HDF5 在 brew update & upgrade 后出现问题

python - 将迭代器管道化到多个消费者?

Python XMPP 服务器库

python - 如何在 shell 中跳过用 nose.plugins.attrib.attr 修饰的类的 nosetests

python - 在 PyCharm 之外运行 PyCharm 项目

python - 无法在 Windows 上找到 haarcascade 默认正面 XML 文件

python - 神经学习的准确性变为 NaN( tensorflow )

python - 如何对 pandas 数据框中的切片求和

python - 整数乘以错误的数字

python - MATLAB find 函数转换为 python - 3 输入参数版本