[英]How to serialise both positional and non-positional arguments of Python objects?
[英]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)
a和b是唯一的強制性參數。 我希望c , d和e是可選的,因此如果用戶未指定它們,則該程序仍然可以運行。
在前面的代碼中,我正在打印參數,因為在指定參數時遇到了問題。
如果我這樣運行程序:
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.