初心者のためのpython入門

自分がつまづいたところやつまづきやすいところを中心に書いていきます。また、役に立つライブラリの紹介などをしていきます。

ライブラリ紹介[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を覗いて見てください!