[英]Parsing limited switches with python argparse
在使用argparse的函數中,是否可以解析僅有限數量的開關? 說,我的命令是:
python sample.py -t abc -r dfg -h klm -n -p qui
我希望argparse從-t解析到-h並保留其余的內容,並且也僅顯示這些內容的幫助。 接下來,我想將-h之后的任何開關解析為另一個函數,並在那里查看相應的幫助。
在argparse中這種行為可能嗎? 還有一種方法可以修改內部使用的sys.arg嗎? 謝謝。
python sample.py -t abc -r dfg -h klm -n -p qui
我希望argparse從-t解析到-h並保留其余的內容,並且也僅顯示這些內容的幫助。 接下來,我想將-h之后的任何開關解析為另一個函數,並在那里查看相應的幫助。
您的規范存在一些問題:
-h
是常規幫助嗎? 如果這樣,它具有優先權,則在不解析其他參數的情況下提供help
。 -h
之后的字符串建議您將其視為普通的用戶定義參數,然后需要關閉幫助來啟動解析器。 但是,您將如何尋求help
?
是什么設置了兩個解析/幫助之間的間隔? 參數的數量, -h
標志(與順序無關)或標志的id。 請記住, argparse
可以按任何順序接受標記的參數。
您可以定義一個知道-t
和-r
解析器,另一個定義處理-n
和-p
解析器。 通過使用parse_known_args
調用每個parse_known_args
可以使其運行而不會引發unknown argument
錯誤。
您也可以修改sys.argv
。 parse_args
(以及已知的變體)采用可選的argv
參數。 如果不存在,則使用sys.argv[1:]
。 因此,您可以修改sys.argv
本身(刪除項目),也可以將sys.argv
的子集傳遞給解析器。
parser1.parse_known_args(sys.argv[1:5])
parser2.parse_known_args(['-n','one','-o','two'])
parser3.parse_args(sys.argv[3:])
嘗試這些想法,如果還有其他問題,請與我們聯系。
您始終可以修改sys.args
並將所需的任何內容放在此處。
至於您的主要問題,您可以有兩個解析器。 其中一個將具有-t
到-h
參數,第二個-n
和-p
。 然后,您可以在每個解析器上使用argparse
的parse_known_args()
方法,該方法將僅解析為每個解析器定義的參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.