2012-12-27 26 views
6

我的目標是使用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 = '*') 

但是當時我沒有對每個命令選擇的附加參數良好的輸入檢查。

這是否有一些正常的方法呢?當然,編寫一個具有幾個可能命令的實用程序是相當常見的,並且每個命令都有不同的必需參數。通過添加手動檢查和幫助文檔,我絕對可以獲得我想要的大部分內容,但這是我可能會做足夠多次的事情,因此值得在第一次嘗試時做到這一點。

感謝您的閱讀並讓我知道我是否可以幫助提供信息。

回答