我有一个要在bash中从命令行运行的Python代码。它接收以下参数:
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顺序。您有解决此问题的想法吗?
答案 0 :(得分:0)
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