argparse
argparseをそのまま使うと以下の様な形になる。色々な書き方があるが、個人的にはflag部分はキーワード引数を使った関数定義にして、parse_args()で返ってきた値をそのまま使わずに**paramsで適用する形が好み。 def hello(*, name: str) -> None: print(f"h…
例えば以下の様な感じで雑にシェル上でループしてコマンドを実行することがあったりすると思います。 $ for i in `seq 10`; do python xxx.py `pintf "%02dfile.txt" $i`; done あるいは $ ls *.txt | xargs -I{} python xxx.py {} こういうときに例えばimpo…
argparse関連の記事を最近色々書いてきたけれど。そういえば設定ファイルとの付き合い方については書いていなかった。今ならどうやって付き合うかなーということのメモ。 ここでの設定ファイルとはファイル名がコマンドライン引数として渡されて、それを読み…
過去にこのような記事を書いた。 コマンドライン引数によって、オプション引数が変わるコマンドの書き方のメモ(2 phase parse?) 今ならどうするだろう?という記事。 これはsubcommandに他ならない 元の記事では以下の様な実行の仕方を許容しているようだ。-…
pythonのargparseでのファイル入出力には、ちょっとだけ気になる点があります。これはそれらについてのメモです。 ファイル入力と標準入力を一緒に使う場合 以下のような形で入力を使いたい場合があると思います。 引数としてファイルを取る ファイルが渡さ…
コマンドライン引数によって、オプション引数が変わる? 例えば --fn というオプションを取り、このオプションが fのときとgのときとで引数が変わるようなもの --fn無し --fn f --fn g # --fn 無し $ python 03cli.py usage: 03cli.py [--verbose] [--name NA…
ドキュメントを見れば分かることだけれど、たまに忘れるので。 import argparse def parse(argv=None): parser = argparse.ArgumentParser() limit_group = parser.add_mutually_exclusive_group() limit_group.add_argument("--limit", dest="limit", type=…
サブコマンドを作る時に何らかのライブラリに依存して良いならclickがオススメではあるけれど。 使いたくない場合もあったりする。そういう時にどうするとまだましになるかみたいな事を考えたりしていた。 argparseでのサブコマンド argparseでのサブコマン…
はじめに # オプション引数がないとなんだかわからない myapp foo bar boo baz bee # オプション引数を指定できると楽 myapp --foo=foo --bar=bar --boo=boo --baz bee # でも、本当は以下の様にして使いたい myapp bee --config=~/.config/myapp argparseな…
要旨は以下 関数の引数の定義から大まかなデフォルト値とコマンドライン引数を取得 sphinxのautodoc形式のdocstringからヘルプメッセージを作成 以下の様にすると greeting() が関数からコマンドになる。 # -*- coding:utf-8 -*- from cmdfromfn import as_c…