初心者のためのpython入門

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

ライブラリ紹介[7/100]: Hydra

前書き

今回は、Hydraを紹介します。

Hydra

githubの説明に"A framework for elegantly configuring complex applications."とあるように複雑なアプリケーションの設定を管理するためのフレームワークです。 前回紹介したOmegaConfを内部 で使用しています。Facebook Researchが中心となって開発しています。

インストール

pip install hydra-core

使い方

使い方に関しては、公式ドキュメントが充実しています。

hydra.cc

後書き

お疲れ様です。

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

ライブラリ紹介[5/100] simplejson

前書き

今回は、simplejsonを紹介します。

simplejson

pythonjsonを扱うためのライブラリです。
pythonにはjsonという標準ライブラリもあります。
jsonsimplejsonは同じものですが、simplejson の方が更新頻度が高いです。

stackoverflow.com

jsonとは

yamlと同じように、構造化データを表現するためのフォーマットです。
JavaScript Object Notationの略で、JavaScriptのObject定義と同じような書き方をします。

ja.wikipedia.org

install

pip install simplejson

使い方

json書き込み

これまでのyaml・tomlと同じように辞書型のオブジェクトを書き込むことができます。

>>> try:
...     import simplejson as json
... except ImportError:
...     import json
...
>>> j = {
...     "client1": {"company": "Tanaka-Company", "name": "Tanaka"},
...     "client2": {"company": "Sato-Company", "name": "Sato"},
... }
>>> with open("client.json", "w") as f:
...     json.dump(j, f)

json読み込み

>>> try:
...     import simplejson as json
... except ImportError:
...     import json
...
>>> with open("client.json", "r") as f:
...     j = json.load(f)
...
>>> import pprint  # 出力を整形する
>>> pp = pprint.PrettyPrinter(indent=4)
>>> pp.pprint(j)
{   'client1': {'company': 'Tanaka-Company', 'name': 'Tanaka'},
    'client2': {'company': 'Sato-Company', 'name': 'Sato'}}

後書き

お疲れ様です。yaml・toml・jsonと紹介しましたが、どれも同じような使い方をしていることがわかると思います!

ライブラリ紹介[4/100]: toml

前書き

今回は、tomlを紹介します。

toml

pythonでtomlを扱うためのライブラリです。

tomlとは

yamlと同じように、構造化データを表現するためのフォーマットです。
Tom's Obvious, Minimal Languageの略です。

en.wikipedia.org

インストール

pip install toml

使い方

前回紹介したpyyamlとほとんど同じです。

tomlの書き込み

辞書型のオブジェクトを書き込むことができます。

>>> import toml
>>> t = {
...     "client1": {"company": "Tanaka-Company", "name": "Tanaka"},
...     "client2": {"company": "Sato-Company", "name": "Sato"},
... }
>>> with open("client.toml", "w") as f:
...     toml.dump(t, f)
...
'[client1]\ncompany = "Tanaka-Company"\nname = "Tanaka"\n\n[client2]\ncompany = "Sato-Company"\nname = "Sato"\n'

tomlの読み込み

>>> impor toml
>>> with open("client.toml", "r") as f:
...     t = toml.load(f)
...
>>> import pprint  # 出力を整形する
>>>
>>> pp = pprint.PrettyPrinter(indent=4)
>>> pp.pprint(t)
{   'client1': {'company': 'Tanaka-Company', 'name': 'Tanaka'},
    'client2': {'company': 'Sato-Company', 'name': 'Sato'}}

後書き

お疲れ様でした。次回は、simplejsonを紹介します。

ライブラリ紹介[3/100]: pyyaml

前書き

今回は、pyyamlを紹介します。

pyyaml

名前の通りpythonyamlを扱うためのライブラリです。

yamlとは

構造化データを表現するためのフォーマットです。
YAML Ain't Markup Languageの略です。

ja.wikipedia.org

インストール

pip install pyyaml

使い方

yamlの書き込み

辞書型のオブジェクトを書き込むことができます。

>>> import yaml
>>> y = {
...     "client1": {"company": "Tanaka-Company", "name": "Tanaka"},
...     "client2": {"company": "Sato-Company", "name": "Sato"},
... }
>>>
>>> with open("client.yaml", "w") as f:
...     yaml.dump(y, f)

yamlの読み込み

上で書き込んだyamlを読み込んでみましょう。

>>> import yaml
>>> with open("client.yaml", "r") as f:
...     y = yaml.safe_load(f)
...
>>> import pprint # 出力を整形する
>>> pp = pprint.PrettyPrinter(indent=4)
>>> pp.pprint(y)
{   'client1': {'company': 'Tanaka-Company', 'name': 'Tanaka'},
    'client2': {'company': 'Sato-Company', 'name': 'Sato'}}

後書き

お疲れ様でした。次回はtomlを扱うライブラリを紹介します。