[解決済み] ConfigParserは大文字のキーを読み込んで小文字にします。
2023-06-16 23:23:39
質問
面白いことがわかりました。 私は1つの設定ファイル読み込みプログラムを次のように書きました。
import ConfigParser
class ConfReader(object):
ConfMap = dict()
def __init__(self):
self.config = ConfigParser.ConfigParser()
self.config.read('./Config.ini')
self.__loadConfigMap()
def __loadConfigMap(self):
for sec in self.config.sections():
for key,value in self.config.items(sec):
print 'key = ', key, 'Value = ', value
keyDict = str(sec) + '_' + str(key)
print 'keyDict = ' + keyDict
self.ConfMap[keyDict] = value
def getValue(self, key):
value = ''
try:
print ' Key = ', key
value = self.ConfMap[key]
except KeyError as KE:
print 'Key', KE , ' didn\'t found in configuration.'
return value
class MyConfReader(object):
objConfReader = ConfReader()
def main():
print MyConfReader().objConfReader.getValue('DB2.poolsize')
print MyConfReader().objConfReader.getValue('DB_NAME')
if __name__=='__main__':
main()
そして、私のConfig.iniファイルはこんな感じです。
[DB]
HOST_NAME=localhost
NAME=temp
USER_NAME=postgres
PASSWORD=mandy
__loadConfigMap()は問題なく動作します。しかし、キーと値を読み込む際に、キーを小文字にしています。理由がよくわかりませんでした。どなたかその理由を教えていただけませんか?
どのように解決するのですか?
ConfigParser.ConfigParser()
のサブクラスで
ConfigParser.RawConfigParser()
のサブクラスであり、このように動作することが文書化されています。
すべてのオプション名は
optionxform()
メソッドで渡されます。デフォルトの実装では、オプション名は小文字に変換されます。
これは、このモジュールが大文字小文字を区別せずに解析されることが期待されるWindows INIファイルを解析するためです。
この挙動は
RawConfigParser.optionxform()
機能
:
self.config = ConfigParser.ConfigParser()
self.config.optionxform = str
str
は、オプションを変更せずに通過します。
関連
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] リスト内の重複を見つけ、それを含む別のリストを作成するにはどうすればよいですか?
-
[解決済み】大文字と数字を含むランダムな文字列の生成
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] データフレームをソートした後にインデックスを更新する
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
-
[解決済み] スネークケースからローワーキャメルケースへの変換(lowerCamelCase)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] pandasのタイムゾーンに対応したDateTimeIndexを、特定のタイムゾーンに対応したナイーブなタイムスタンプに変換する。
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
-
[解決済み] ConfigParserで大文字と小文字を区別する?