ユーザーが任意の数のサンプルを宣言できるコマンドラインインターフェイスをサポートしたいと思います。各サンプルに対応する1つ以上の入力ファイルがあります。このような何か:Pythonで関連する名前付き引数の任意の数をサポートするargparse
$ myprogram.py \
--foo bar \
--sample1 input1.tsv \
--sample2 input2a.tsv input2b.tsv input2c.tsv \
--sample3 input3-filtered.tsv \
--out output.tsv
アイデアは、オプションキーがパターン--sample(\d+)
に一致することで、次の-
または--
プレフィックスフラグに遭遇するまで、各キーはオプションの値として、後続のすべての引数を消費します。明示的に宣言された引数の場合、これはモジュールがnargs='+'
オプションでサポートする一般的な使用例です。しかし、私は任意の数の引数をサポートする必要があるため、明示的に宣言することはできません。
parse_known_args
コマンドを使用すると、ユーザーが指定したすべての引数にアクセスできますが、明示的に宣言されていない引数はインデックス付きのデータ構造にグループ化されません。これらについては、引数リストを慎重に調べ、現在のフラグなどに対応する後続の値の数を調べる必要があります。
本質的に再実装することなくこれらのオプションを解析する方法はありますか引数パーサーの大部分(ほとんど)がゼロからですか?
あなたはその場でargparserを構築すると考えましたか?コマンドラインで '--sample'の数を数え、それを使って適切なargparserをビルドします。ラウンドアバウトの種類ですが、それはargparseが重い持ち上げを行うことができます。 – TemporalWolf