Closed2

argparseの代替手段classopt

yumizuyumizu

個人的にargparseは読みにくくて好きではないので、代替手段を探してみたところclassoptというライブラリがあった

https://github.com/moisutsu/classopt
https://zenn.dev/moisutsu/articles/argument-parser-by-class

dataclassっぽくコマンドライン引数を指定できる。読みやすい書きやすくてよい。argparse標準のコマンド引数ArgumentParser.add_argumentも同様につかえる

from classopt import classopt, config

@classopt(default_long=True, default_short=True)
class Args:
    paths: list[str] = config(help="Input paths")
    flag: bool = config(help="Input flag")

args: Args = Args.from_args()
yumizuyumizu

def __post_init__(self):でdataclass同様に、コマンドライン引数を用いて、何かしらの処理をしてクラス管理ができる

@classopt(default_long=True, default_short=True)
class Args:
    date = datetime.now().strftime("%Y-%m-%d/%H-%M-%S")

    def __post_init__(self):
        self.output_dir = Path("outputs") / self.date

非常に使いやすい!

このスクラップは2023/05/30にクローズされました