2014-10-03 85 views
2

我有一个win32应用程序通过RDP访问用户访问。 每个用户都有他/她自己的user_app.ini文件。如何在部分名称中区分大小写?

当我在RDP服务器上升级应用程序时,有时需要在每个用户的user_app.ini文件中创建/修改条目。我编写了一个Python脚本来处理使用upgrade.ini文件更新所有user_app.ini文件的作业,使用ConfigParser模块。

我的问题是,我的部分名字应被视为不区分大小写,但ConfigParser是关于部分(虽然可能情况下钝感关于使用optionxform()选项

有人可以帮助我区分大小写?谢谢

回答

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*\]') 

这个解析器应该考虑所有部分的名称为小写。

根据您的确切需要,您可能需要调整一下代码。