已编辑帖子
我无法读取包含 []
... 的配置文件部分,例如,如果 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/