yamlによる引数読み込みを改善

Pythonを実行する際の引数指定は,以下のようにyamlで行うのが効率が良いとされている.

# yamlファイルの準備(ここは普通手動で行う)
content = "batch_size: 16\nwidth: 224\nheight: 224"

with open("config.yaml", "w") as f:
  f.write(content)
# 通常
import yaml

CONFIG = yaml.safe_load(open("config.yaml")) # ファイル名はハードコーディングではなくopen(args.config)のようにコマンドライン引数から読み込むのが良い
CONFIG["width"]

しかし,キー指定する際にカッコとダブルクォートを打つのは面倒なのでaddictを用いて辞書のキーをアトリビュートのように指定.

# addictを用いたキー指定なしの読み込み
import yaml
from addict import Dict

CONFIG = Dict(yaml.safe_load(open("config.yaml")))
CONFIG.width

一見地味に思えるこの方法だが,実際のスクリプトでは引数をいくつも指定することがあるため,非常に便利な方法だと思う.

Python,効率化

Posted by vastee