我有一个用户通过RDP访问访问的win32应用程序。
每个用户都有自己的user_app.ini
文件。
当我在RDP服务器上升级我的应用程序时,我有时需要在每个用户的user_app.ini
文件中创建/修改条目。我编写了一个Python脚本来处理使用upgrade.ini
文件更新所有user_app.ini
文件的作业,使用ConfigParser
模块。
我的问题是我的部分名称应该被视为不区分大小写,但ConfigParser
对于部分是区分大小写的(虽然它对选项可能不区分使用optionxform()
)
有人能帮助我吗?感谢
答案 0 :(得分:0)
您可以覆盖SECTCRE
属性。这应该定义一个与节名称匹配的正则表达式。
您可以传递任何具有match
方法的对象而不是正则表达式,该方法接受一个字符串并返回一个对象,该对象具有接受字符串group
作为参数的'header'
方法。
例如:
class FakeRe:
def __init__(self, regex):
self.regex = regex
def match(self, text):
m = self.regex.match(text)
if m:
return FakeMatch(m)
return None
class FakeMatch:
def __init__(self, match):
self.match = match
def group(self, name):
return self.match.group(name).lower()
然后,您可以在创建解析器时设置该属性:
config = ConfigParser()
config.SECTCRE = FakeRe(re.compile(r'\[\s*(?P<header>some regex here)\s*\]')
并且此解析器应将所有节名称视为小写。
您可能需要稍微调整一下代码,具体取决于您的确切需求。