1

いくつかの調査を行いましたが、有効な解決策が見つかりませんでした。次のコマンド ラインを解析しようとしています。「test」と「train」は、それぞれ異なる引数を持つ 2 つの独立したサブコマンドです。

./foo.py train -a 1 -b 2 
./foo.py test  -a 3 -c 4
./foo.py train -a 1 -b 2 test -a 3 -c 4

2 つのサブパーサー (「test」、「train」) を使用してみましたが、一度に解析できるのは 1 つだけのようです。また、これらのサブパーサーをメイン パーサーの親にすることもできます。たとえば、コマンド '-a' をサブパーサー 'train' と 'test' の両方に追加する必要はありません。

解決策はありますか?

4

1 に答える 1

0

これは以前に尋ねられたことがありますが、これらの質問を見つける最善の方法はわかりません。

サブパーサーのメカニズム全体は、そのようなコマンドの 1 つのために設計されています。注意すべき点がいくつかあります。

  • add_subparsers位置引数を作成します。`ポジショナルとは異なりoptionals、一度だけ作用します。

  • 「add_subparsers」を数回呼び出すとエラーが発生する

  • 解析は、そのような呼び出しを 1 つだけ中心に構築されます。

過去に提案した回避策の 1 つは、「ネストされた」または「再帰的な」サブパラメーターです。つまりtrain、サブパーサーも必要になるように設定されています。しかし、サブパーサーが必要かどうかに関しては複雑な問題があります。

subparserまたは、メカニズムをバイパスして、複数のパーサーを検出して呼び出すことができます。

サイドバーから

1 つのコマンド ラインで同じサブコマンドを複数回呼び出す

Pythonで複数のサブコマンドを同時に解析するか、解析された引数をグループ化する他の方法

于 2016-09-22T17:32:42.363 に答える