나는 내가 여러 subparsers 파이썬 argparse, 위치 인수 및 subparsers
parser = argparse.ArgumentParser(description = "Setup the DB",
add_help=False)
parser.add_argument('action', type = str,
choices=['drop','populate','print','create','print-metadata'],
help = "Specify an action", default = None)
subparsers = parser.add_subparsers()
drop_parser = subparsers.add_parser('drop',parents=[parser])
drop_parser.add_argument('-dataset-name',
required=True,
type = str, help = "Dataset Name",
default = None)
.....
args = parser.parse_args()
.....
나는 다음과 같은 얻을이 실행으로 이동
와 argparse 사용하고있는 다음 코드가 :python .\populatedb.py drop -dataset-name foo
populatedb.py: error: invalid choice: 'foo' (choose from 'drop', 'populate', 'print', 'create', 'print-metadata')
나는를 위의 코드가 잘못되어 있는지 궁금합니다. "action"인수는 위치 인수입니다.
미리 감사드립니다. 이것은 분명히 실수를 저지르고있는 서브 파서를 처음 사용하는 것입니다.
미리 감사드립니다.
감사합니다,
랑가
왜 하위 파서에 대한 인수를 추가하고 있습니까? – mgilson
빠른 답장을 보내 주셔서 감사합니다. 인수는 "drop"작업에만 의미가 있습니다. 다른 옵션의 경우 의미가 없으므로 서브 파서에 추가했습니다. 나는 명확성을 위해 다른 서브 파서를 생략했다. – LostInTheFrequencyDomain
'action drop'을 추가해야 할 수도 있습니다. python populatedb.py -h를 실행하여 전달해야하는 인수의 순서를 볼 수 있습니다. –