2017-06-15 56 views
0

我需要有其形式爲 「蟒script.py --step1 = 100 --step3 = 53 --step2 = 34」argparse的參數的圖案

的要求是

    命令行
  • 我不知道有多少--stepN標誌有提前
  • 的--stepN標誌的順序沒有設置,所以我不能只用行動=「追加」

我m也對這些限制感興趣:

  • 步數應該是連續的,所以如果使用了--step20,但是--step19丟失,這是一個錯誤。
  • 我想在一個列表中的值的目的地。因此,在上面的命令行例如,我想像做

    ARGS = parser.parse_args()

    args.steps#是列表[100,34,53]

燦argparse採取一種格言,不知何故,我可以寫一個自定義的動作或類型來做我想做的事情?我在想像

parser.add_argument('--step*', 
        type=CustomType, 
        action=CustomAction, 
        help='Use --step1=a --step2=b, ....') 
+0

您可以根據您的要求傳遞字典。 – Stack

回答

0

這不是一個好的​​契合。關於接受一般化的key=value輸入和各種kludgey答案,一直存在一些問題。大部分答案等於你自己解析字符串,從sys.argvextrasparse_known_args

Create variable key/value pairs with argparse (python)

這是與你的主要形式加入要求千真萬確。

在最近這樣的問題,我建議使用appendnargs=2所以輸入會是這樣的形式:

python script.py --step 1 100 --step 2 53 --step 3 34 

生產

Namespace(step=[[1,100], [2,53], [3, 24]]) 

,你可能值檢查過程和你的心臟的內容。

Support arbitrary number of related named arguments with Python argparse