(그리고 심지어 내 매뉴얼 접근 방식의 '도움'섹션 둘 다 선택 사항으로 표시). 또한 하나의 ?
위치와 함께 옵션 (플래그가 지정된 인수)과 함께 작동합니다. (하나 이상의 '?'위치는 의미가 없습니다).
help
디스플레이에는 두 개의 기본 그룹 인 positonal
과 optional
이 있습니다. 따라서 optional
(플래그가 지정된)이 required
으로 설정된 경우에도 기본적으로 optional
그룹에 표시됩니다. usage
행은 인수가 필요한지 아닌지에 대한 더 나은 지침입니다. 도움말 섹션의 그룹 레이블이 마음에 들지 않으면 고유 한 인수 그룹을 정의하십시오.
In [146]: import argparse
In [147]: parser = argparse.ArgumentParser()
In [148]: gp = parser.add_mutually_exclusive_group(required=True)
In [149]: gp.add_argument('pos', nargs='?', default='foo');
In [150]: gp.add_argument('-f','--foo', default='bar');
In [151]: parser.parse_args('arg'.split())
Out[151]: Namespace(foo='bar', pos='arg')
In [152]: parser.parse_args('-f arg'.split())
Out[152]: Namespace(foo='arg', pos='foo')
In [153]: parser.parse_args('arg -f arg'.split())
usage: ipython3 [-h] [-f FOO] [pos]
ipython3: error: argument -f/--foo: not allowed with argument pos
In [154]: parser.parse_args(''.split())
usage: ipython3 [-h] [-f FOO] [pos]
ipython3: error: one of the arguments pos -f/--foo is required
In [155]: parser.parse_args('-h'.split())
usage: ipython3 [-h] [-f FOO] [pos]
positional arguments:
pos
optional arguments:
-h, --help show this help message and exit
-f FOO, --foo FOO
아차는 사용이 상호 배타 그룹의 -f
및 pos
표시되지 않습니다. 때로는 usage
서식이 약합니다.
In [165]: parser = argparse.ArgumentParser()
In [166]: gp = parser.add_argument_group('Mutually exclusive')
In [167]: gpm = gp.add_mutually_exclusive_group(required=True)
In [168]: gpm.add_argument('-f','--foo', default='bar');
In [169]: gpm.add_argument('pos', nargs='?', default='foo');
In [170]:
In [170]: parser.parse_args('-h'.split())
usage: ipython3 [-h] (-f FOO | pos)
optional arguments:
-h, --help show this help message and exit
Mutually exclusive:
-f FOO, --foo FOO
pos
이 일반 규칙 argument_groups 및 mutually_exclusive_groups에 한 가지 예외가있다 : 인수가 정의되는 순서를 전환
는
사용자 정의 인수 그룹으로 더 나은 사용
In [156]: parser = argparse.ArgumentParser()
In [157]: gp = parser.add_mutually_exclusive_group(required=True)
In [158]: gp.add_argument('-f','--foo', default='bar');
In [159]: gp.add_argument('pos', nargs='?', default='foo');
In [160]:
In [160]: parser.parse_args('-h'.split())
usage: ipython3 [-h] (-f FOO | pos)
positional arguments:
pos
optional arguments:
-h, --help show this help message and exit
-f FOO, --foo FOO
을 제공합니다 중첩을 위해 설계되지 않았습니다.
는 M-X-그룹이 필요하지 않은
, 사용은 []
usage: ipython3 [-h] [-f FOO | pos]
그레이트 사용할 수 있습니다. 단 한가지주의 할 점 :이 그룹 정의는 다른 모든 정규 인수 뒤에 와야합니다. 그렇지 않으면 도움말에 멋진'(-f FOO | pos)'가 표시되지 않습니다 – Zvika
예, 2 가지가'usage'에 영향을줍니다. 옵션은 옵션 뒤에 표시되며 그룹은 인수가 해당 순서와 일치하는 경우에만 나타납니다. 취성을 교정하려면 사용 포맷터를 대대적으로 다시 작성해야합니다. – hpaulj