簡體   English   中英

Python和argparse:如何根據第一個參數改變所需的附加參數?

[英]Python and argparse: how to vary required additional arguments based on the first argument?

我的目標是使用argparse編寫一個Python命令行實用程序,該實用程序具有多個命令,每個命令都有不同的必需輸入集。

我嘗試閱讀文檔,一些谷歌搜索,堆棧溢出,找不到任何東西。 我可以想到一些可能的解決方案,但它們很難看,需要手動處理幫助文檔和驗證。 我懷疑這是一個普遍有效的解決方案已經足夠了解的問題,我只是缺乏搜索它的正確術語,或者它是一個很小的邊緣,它沒有張貼在很多地方。

我現在最好的想法是有一個位置參數,並且根據該輸入的值以某種方式對一組附加參數有不同的要求。 也許我會解析兩次?

例如,這是一個類似的情況:

有一個位置論證,動物

動物的選擇是貓,蜥蜴,魚

對於貓,需要參數爪,胡須,爪子

對於蜥蜴,參數scale_color,favorite_food是必需的

對於魚類,需要參數water_type

我們希望在-h中記錄每個不同動物值所需的額外參數,而不需要采用非正統的做法。

我考慮過為每個主要類別選擇提供一個可選參數。 這是沒有吸引力的,因為該實用程序實際上只想采取其中一個參數,如果我可以避免在強制執行和記錄這個方面重新發明輪子,我寧願這樣做。

我可以這樣做:

valid_commands = ['a','b','c','d','e','f','g']
parser.add_argument('command', choices = valid_commands)
parser.add_argument('inputs', nargs = '*')

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

這有什么正常的方法嗎? 當然,編寫一個具有多個可能命令的實用程序以及每個命令的不同必需參數是相當普遍的。 通過添加手動檢查和幫助文檔,我絕對可以獲得大多數我想要的東西,但這種情況我可能會做足夠多次,以便在第一次嘗試時做到這一點是值得的。

感謝您閱讀並告訴我是否可以提供相關信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM