python argparse-h类行为和互斥参数

python argparse-h类行为和互斥参数,python,argparse,required,Python,Argparse,Required,我的脚本通常会接受一个必需的参数,比如soscript.py PATH,但我也可以像soscript.py-e EXPRESSION那样调用它,并一起省略PATH 有没有办法用argparse实现这一点 为了向后兼容,我想添加此功能,但不想更改现有的行为,例如,让路径通过script.py--path path path path传递,而不仅仅是script.py path 我认为这应该不会太难,因为它类似于-h的行为。您可以使用选项“default”,这样,即使您没有指定参数,它也将被分配:

我的脚本通常会接受一个必需的参数,比如so
script.py PATH
,但我也可以像so
script.py-e EXPRESSION
那样调用它,并一起省略
PATH

有没有办法用argparse实现这一点

为了向后兼容,我想添加此功能,但不想更改现有的行为,例如,让路径通过
script.py--path path path path
传递,而不仅仅是
script.py path

我认为这应该不会太难,因为它类似于-h的行为。

您可以使用选项“default”,这样,即使您没有指定参数,它也将被分配: 例如:

您可以使用“默认”选项,这样,即使您没有指定参数,也将以任何方式分配该参数: 例如:


可以使用包含可选位置参数的互斥组

parser = argparse.ArgumentParser(usage='%(prog)s [-h] (PATH | -e EXPRESSION)')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument("PATH", nargs='?', help="Path")
group.add_argument("-e", "--expression", help="Regular expression")

print parser.parse_args()

默认用法不显示排他性组以及两个常规参数之间的排他性组,这就是我添加自定义用法的原因。

您可以使用包含可选位置参数的互斥组

parser = argparse.ArgumentParser(usage='%(prog)s [-h] (PATH | -e EXPRESSION)')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument("PATH", nargs='?', help="Path")
group.add_argument("-e", "--expression", help="Regular expression")

print parser.parse_args()

默认用法不显示排他性组以及两个常规参数之间的排他性组,这就是我添加自定义用法的原因。

问题是我想以相互排斥的方式组合位置参数和非位置参数。问题是我想以相互排斥的方式组合位置参数和非位置参数。