ライブラリ紹介[6/100]: OmegaConf
前書き
今回は、OmegaConfを紹介します。
OmegaConf
pythonのConfigrationフレームワークのひとつです。設定ファイルの管理のために使用します。
標準ライブラリに含まれるconfigparserもConfigurationに使用されるモジュールの1つです。
フレームワークとライブラリは厳密には違うものを意味しますが、ここでは区別せずに紹介していきます。
インストール
pip install omegaconf
使い方
OmegaConfオブジェクトを作成
辞書型のオブジェクトから設定を表すOmegaConfオブジェクトを作成することができます。
>>> from omegaconf import OmegaConf >>> >>> o = { ... "client1": {"company": "Tanaka-Company", "name": "Tanaka"}, ... "client2": {"company": "Sato-Company", "name": "Sato"}, ... } >>> >>> config = OmegaConf.create(o) # OmegaConfオブジェクトを作成 >>> print(config.client1) # 属性値としてアクセス {'company': 'Tanaka-Company', 'name': 'Tanaka'} >>> print(config["client2"]) # keyを指定してアクセス {'company': 'Sato-Company', 'name': 'Sato'}
yamlを出力
>>> y = OmegaConf.to_yaml(config) >>> print(y) client1: company: Tanaka-Company name: Tanaka client2: company: Sato-Company name: Sato >>> with open("client_config.yaml", "w") as f: ... f.write(y) ... 96
yamlを読み込み
yamlからOmegaConfオブジェクトを作成することできます。
>>> config = OmegaConf.load("client_config.yaml") >>> print(config) {'client1': {'company': 'Tanaka-Company', 'name': 'Tanaka'}, 'client2': {'company': 'Sato-Company', 'name': 'Sato'}}
OmageConfオブジェクトの結合
複数のOmegaConfオブジェクトを結合することができます。
>>> o1 = {"client1": {"company": "Tanaka-Company", "name": "Tanaka"}} >>> o2 = {"client2": {"company": "Sato-Company", "name": "Sato"}} >>> >>> config1 = OmegaConf.create(o1) # OmegaConfオブジェクトを作成 >>> config2 = OmegaConf.create(o2) # OmegaConfオブジェクトを作成 >>> config = OmegaConf.merge(o1, o2) # OmegaConfオブジェクトを結合 >>> print(config.client1) {'company': 'Tanaka-Company', 'name': 'Tanaka'} >>> print(config["client2"]) {'company': 'Sato-Company', 'name': 'Sato'}
後書き
お疲れ様でした。
OmegaConfを簡単に紹介しました。
OmegaConfにはまだまだ便利な機能がたくさんあるので、githubを覗いて見てください!