簡體   English   中英

可選的非位置參數Python程序

[英]Optional non-positional arguments Python program

我有一個Python代碼可以從bash的命令行中運行。 它接收以下參數:

parser = argparse.ArgumentParser()
parser.add_argument('a')
parser.add_argument('b')
parser.add_argument('c', nargs='?', default=None)
parser.add_argument('d', nargs='?', default=None)
parser.add_argument('e', nargs='?', default=None)

arg_parser = create_arg_parser()
parsed_args, unknown = arg_parser.parse_known_args()
print(parsed_args)

ab是唯一的強制性參數。 我希望cde是可選的,因此如果用戶未指定它們,則該程序仍然可以運行。

在前面的代碼中,我正在打印參數,因為在指定參數時遇到了問題。

如果我這樣運行程序:

python myScript.py a1 b1 c1 d1 e1

它完美地工作! 輸出為:

a='a1', b='b1', c='c1', d='d1', e='e1'

如果我這樣做(我省略了參數“ e”):

python myScript.py a1 b1 c1 d1

輸出再次正常(我希望'e'為None):

a='a1', b='b1', c='c1', d='d1', e=None

但是,問題出在我這樣做時:

python myScript.py a1 b1 d1

輸出為:

a='a1', b='b1', c='d1', d=None, e=None

我不希望d1與c有關,但與d有關。 我不會告訴程序在提供的可選參數中采用ANY順序。 您有什么想法要解決嗎?

parser = argparse.ArgumentParser()
parser.add_argument('a')
parser.add_argument('b')
parser.add_argument('-c')
parser.add_argument('-d')
parser.add_argument('-e')

parsed_args = parser.parse_args()
print(parsed_args)

用於

python myScript.py a1 b1 -c c1 -d d1
python myScript.py a1 -d d1 b1
etc

暫無
暫無

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

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