2016-09-22 30 views
1

做了一些研究,但找不到任何工作解決方案。我試圖解析以下命令行,其中「測試」和「訓練」是兩個獨立的子各有不同的論點:Argparse:解析多個子命令

./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 

我一直在用兩個subparsers(「測試」努力,「火車'),但似乎只有一個人可以在當時解析。另外,將主分析器的父分析器設置爲例如命令'-a'不必同時添加到子分析器的'列車'和'測試'

任何解決方案?

+0

你可以用'parents'一個普遍的說法添加幾個subparsers。或者你可以爲主分析器定義'-a'。 – hpaulj

回答

0

這已被問過,但我不確定找到這些問題的最佳方式。

整個subparser機制是爲一個這樣的命令而設計的。有幾點需要注意:

  • add_subparsers創建一個位置參數;不像optionals`位置只作用一次。

  • 「add_subparsers」如果你調用它幾次

  • 解析是建立在只有一個這樣的待命,我們已經提出了在過去是

一個工作會引發錯誤'嵌套'或'遞歸'子對象。換句話說,train已設置,因此它也需要一個子分析器。但是,是否需要分析器是複雜的。

或者您可以檢測並調用多個解析器,繞過subparser機制。

從側邊欄

Multiple invocation of the same subcommand in a single command line

Parse multiple subcommands in python simultaneously or other way to group parsed arguments