簡體   English   中英

python argparse可選參數

[英]python argparse optional arguments

我正在為我的python程序評估argparse,但不確定是否可以完成以下工作:

Usage:
prog --file <filename> --function <function name> --mode <mode name>
prog --file <filename> --function <function name>  {in this case default mode is applied on specified function in a specified file}
prog --file <filename> --mode <mode name> {in this case specified mode is applied on a specified file}

簡而言之,我想使整個--function及其跟隨者是可選的。 目前,我已經通過了nargs =“?” 在那種情況下,但這使argparse感到困惑,當我通過--mode時,它將其當作--function。

parser = argparse.ArgumentParser(description = "program")
parser.add_argument("file", nargs=2)
parser.add_argument("function", nargs='?')
parser.add_argument("mode", nargs='?', default='read')

無論如何,我可以使用argparse完成此操作嗎? 否則我將不得不使用sys.args編寫自己的解析器?

謝謝。

我在研究另一個argparse問題時發現了這一點。 也許我的回答會幫助別人。 如果我理解這個問題,則需要在可選參數中添加“-”。 聲明如下所示:

parser = argparse.ArgumentParser(description = "program")
parser.add_argument("file")
parser.add_argument("--function")
parser.add_argument("--mode", default='read')

執行此操作時,“文件”是必需的,“功能”和“模式”是可選的。
將以下行添加到您的代碼段中,您將獲得顯示的輸出。

args = parser.parse_args('my_file --function func_1'.split())
print (args)
Namespace(file='my_file', function='func_1', mode='read')

args = parser.parse_args('other_file --mode write'.split())
print (args)
Namespace(file='other_file', function=None, mode='write')

您可以使用args.file, args.function, and args.mode來訪問各個值。
您對他們的處理取決於您。 :-)

暫無
暫無

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

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