2012-12-27 11 views
6

私の目標は、argparseを使用してPythonのコマンドラインユーティリティを書くことです。コマンドにはそれぞれ異なる入力セットがある複数のコマンドがあります。Pythonとargparse:最初の引数に基づいて必要な追加引数を変更する方法は?

私はドキュメント、いくつかのGoogle検索、およびスタックオーバーフローを読んで何かを見つけることができませんでした。私はいくつかの可能な解決策を考えることができますが、それらは醜いですし、ヘルプドキュメントと検証を手動で処理する必要があります。私が疑うのは、これは既によく知られている一般的で効果的な解決方法の問題であり、それを検索するための適切な条件が不足しているか、あまりにも不明瞭で、多くの場所。

今私が持っている最良のアイデアは、1つの位置引数を持ち、何らかの形で、その入力値に基づいて一連の追加引数が必要です。多分私は2回解析するでしょうか?一例として、

が、これは同様のケースである:

1つの位置引数、動物動物用

のオプションがあります猫、トカゲ、猫、引数爪、ウィスカーのために魚

あり、足が引数scale_color、トカゲについて

を必要としている、favorite_foodは、引数water_type iは、魚について

を必要としています必要とされる追加の引数は、それぞれの異なる動物の価値について、-hで文書化されることを、正統慣行に頼らずに欲しいと考えています。

メインカテゴリの選択肢ごとにオプションの引数でこれを行うことを検討しました。これは魅力的ではありません。なぜなら、このユーティリティーは実際にはそれらの引数の1つを取ることを望んでいるだけなので、これを実行して文書化するという観点からホイールを再作成することを避けることができます。

私のような何かを行うことができます:

valid_commands = ['a','b','c','d','e','f','g'] 
parser.add_argument('command', choices = valid_commands) 
parser.add_argument('inputs', nargs = '*') 

をしかし、私は、各コマンドの選択のための追加の引数の良い入力チェックを持っていません。

これは正常に行われていますか?確かに、いくつかの可能なコマンドとそれぞれに必要な引数が異なるユーティリティを書くのはかなり一般的です。私は間違いなくマニュアルチェックとドキュメントの追加を必要としたいと思っていますが、これは最初の試行でそれを得るには十分な時間がかかるほどのことです。

お読みいただきありがとうございます。情報提供にご協力いただければ教えてください。

答えて

7
+0

リンクロスをありがとう。私は今すぐそれを確認します。 –

+0

私が探していたのはサブパネルのようです。実装の賢明さを正確に把握するには少し時間がかかるでしょうが、これは間違いなく私の問題を解決します。 –

関連する問題