他のヒント

私にとっては、オブジェクトを作成した直後にoptionxformを設定するように働きました

config = ConfigParser.RawConfigParser()
config.optionxform = str 

コードに追加:

config.optionxform = lambda option: option  # preserve case for letters

この質問には答えられていることは知っていますが、このソリューションが役立つと考える人もいると思います。これは、既存のConfigParserクラスを簡単に置き換えることができるクラスです。

@OozeMeisterの提案を組み込むために編集:

class CaseConfigParser(ConfigParser):
    def optionxform(self, optionstr):
        return optionstr

使用法は通常のConfigParserと同じです。

parser = CaseConfigParser()
parser.read(something)

これにより、新しい ConfigParser を作成するたびにoptionxformを設定する必要がなくなります。これは面倒です。

注意:

ConfigParserでデフォルトを使用する場合、つまり:

config = ConfigParser.SafeConfigParser({'FOO_BAZ': 'bar'})

次に、これを使用してパーサーの大文字と小文字を区別しようとします:

config.optionxform = str

設定ファイルのすべてのオプションでは大文字と小文字が区別されますが、 FOO_BAZ は小文字に変換されます。

デフォルトでも大文字と小文字を区別するには、@ icedtrees answerのようなサブクラスを使用します。

class CaseConfigParser(ConfigParser.SafeConfigParser):
    def optionxform(self, optionstr):
        return optionstr

config = CaseConfigParser({'FOO_BAZ': 'bar'})

Now FOO_BAZ は大文字小文字を保持し、 InterpolationMissingOptionError は発生しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top