簡體   English   中英

使用python argparse解析有限的開關

[英]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 然后,您可以在每個解析器上使用argparseparse_known_args()方法,該方法將僅解析為每個解析器定義的參數。

暫無
暫無

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

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