2021年6月26日土曜日

python-box を使ってみた。

久々のアップです。 時間はあるけど、自由にならないんです。

ちょこちょこ、とは作業はしてるんです。 で、最近便利だと感じているやつです。

いつものことで、以下のサイトに出会ったから。(感謝!)

これまで、設定ファイルから読んで、変数をあれこれセットするのに、 class 作ってとか結構頑張る必要があった(初心者なんで)けど、 こいつを使うと、この部分が随分楽になった、と、思う。

例えば、以下のように、簡単にドットでアクセスできる。 (json と ini。 エラー処理とかなし。まだ出来てない)

読み込ませるファイルをきちんと整理するのは大事。 自分は何度も直しとかしてるし、今も変更する候補あり。

あと、json より 自由にメモがかける、ini? の方が好きかも。 使い分けがスジなんだろうけど。

import configparser
import json
import sys

from box import Box
from prompt_toolkit import print_formatted_text as pprint


def read_ini(_f):
    """Return python-box."""
    #
    t_config = configparser.ConfigParser()
    t_config.read(_f)

    _p = {s: dict(t_config.items(s)) for s in t_config.sections()}
    # 取り敢えず読んだものを辞書にするだけ.型とかセットしていない.

    return Box(_p)


def read_json(_f):
    """Return python-box."""
    #
    with open(_f, encoding="utf-8") as _b:
       _p = json.load(_b)
       #          = json.loads()
       # loads は使えない。リストが含まれてるから?

    return Box(_p)


def main():
    """Read setting files."""
    #
    para_box_i = read_ini("test.ini")

    pprint(para_box_i.kml.path)
    pprint(para_box_i.kml.descriptions)

    para_box_j = read_json("test.json")

    pprint(para_box_j.kml.path)
    pprint(para_box_j.kml.descriptions)

    sys.exit()


if __name__ == "__main__":

    main()

クラスを書く量が随分と少なくなる。 速度や、使用メモリとか、どうなんだろうか。

まあ、便利になったはずなので、よし、としよう。

久々のアップで、手順忘れかけてる。

0 件のコメント:

コメントを投稿

麻のボディタオル

2018年の秋(まだ、自転車を封印してない)、 近江上布伝統産業会館 で、興味からボディタオルを購入した。 お、よかった。: 自然派パン工房 ふるさとの道 ほぼ毎日風呂で使ってきて、ついに寿命がきたようだ。 お店の方に、「糸が痩せて破れてくる」まで使える、と...