1. ホーム
  2. python

[解決済み] ConfigParserで大文字と小文字を区別する?

2022-11-09 19:07:27

質問

私は、Pythonの ConfigParser モジュールを使って設定を保存してみました。私のアプリでは、私のセクションの各名の大文字と小文字を保持することが重要です。ドキュメントによると、str()を にstr()を渡すことについて言及しています。 に str() を渡すことでこれを達成できるとドキュメントに書かれていますが、私の場合はうまくいきません。名前はすべて小文字です。私は何かを見逃しているのでしょうか?

<~/.myrc contents>
[rules]
Monkey = foo
Ferret = baz

私が得たもののPython疑似コード。

import ConfigParser,os

def get_config():
   config = ConfigParser.ConfigParser()
   config.optionxform(str())
    try:
        config.read(os.path.expanduser('~/.myrc'))
        return config
    except Exception, e:
        log.error(e)

c = get_config()  
print c.options('rules')
[('monkey', 'foo'), ('ferret', 'baz')]

どのように解決するのですか?

ドキュメントが混乱しています。彼らが言いたいことはこうです。

import ConfigParser, os
def get_config():
    config = ConfigParser.ConfigParser()
    config.optionxform=str
    try:
        config.read(os.path.expanduser('~/.myrc'))
        return config
    except Exception, e:
        log.error(e)

c = get_config()  
print c.options('rules')

つまり、optionxformを呼び出すのではなく、オーバーライドします。オーバーライドは、サブクラスまたはインスタンスで行うことができます。オーバーライドするときは、(関数を呼び出した結果ではなく)関数に設定します。

私は今、報告した をバグとして報告しました。 として報告し、その後修正されました。