我的目標是使用argparse編寫一個Python命令行實用程序,該實用程序具有多個命令,每個命令都有不同的必需輸入集。Python和argparse:如何根據第一個參數改變所需的附加參數?
我試着通過文檔,幾個谷歌搜索和堆棧溢出閱讀,找不到任何東西。我可以考慮一些可能的解決方案,但它們很醜,需要手動處理幫助文檔和驗證。我的懷疑是,這是一個已知的常見有效解決方案的問題,我只是缺乏搜索它的正確條款,或者它有一點點模糊不清,並且沒有發佈不少地方。
我現在最好的想法是有一個位置參數,並基於該輸入的值以某種方式對一組附加參數有不同要求。也許我會解析兩次?
作爲一個例子,這是一個類似的情況:
有一個位置參數,動物
選項動物是貓,蜥蜴,魚
對於貓,自變量爪,晶須,爪子需要
對於蜥蜴,參數scale_color,favorite_food需要
對魚,論點water_type我s需要
我們希望爲每個不同的動物價值所需的額外參數記錄在-h中,而不訴諸非正統的做法。
我認爲這是對每個主類別選項的可選參數。這是沒有吸引力的,因爲公用事業公司真的只想採取其中一個論點,如果我可以避免在執行和記錄這方面重新發明輪子,我寧願。
我可以這樣做:
valid_commands = ['a','b','c','d','e','f','g']
parser.add_argument('command', choices = valid_commands)
parser.add_argument('inputs', nargs = '*')
但是當時我沒有對每個命令選擇的附加參數良好的輸入檢查。
這是否有一些正常的方法呢?當然,編寫一個具有幾個可能命令的實用程序是相當常見的,並且每個命令都有不同的必需參數。通過添加手動檢查和幫助文檔,我絕對可以獲得我想要的大部分內容,但這是我可能會做足夠多次的事情,因此值得在第一次嘗試時做到這一點。
感謝您的閱讀並讓我知道我是否可以幫助提供信息。
感謝您的鏈接羅斯。我會馬上查看。 –
看起來像子分析器就是我正在尋找的東西。需要一點點才能明確地明白需要實施什麼,但這絕對能解決我的問題。 –