Przeszukałem wiele różnych przykładów tutaj i ogólnie, ale nie wydaje mi się, aby odkryć tę pozornie prostą rzecz.Jak poprawnie używać argparse paragraphs?
Mam dwa typy var, z których jeden ma ograniczenia, tak więc piskliwy był do zrobienia. na przykład -t pozwala na "A" lub "B". Jeśli użytkownik przekaże "A", wówczas będzie musiał dodatkowo określić, czy jest to "a1", czy "a2". Jeśli przejdą tylko "B", to nic.
Czy mogę to zrobić i czy argparse zwróci mi rodzaj "A" lub czy jest to "B"?
Poniższe wydaje się działać, ale z jakiegoś powodu przerwy, gdy przechodzi cokolwiek po akapicie.
np. z terminalu linux
>> python test01.py -t A a1 -v 61
błędy z ...
usage: test01.py a1 [-h]
test01.py a1: error: unrecognized arguments: -v
Mam nadzieję, że to ma sens.
Kod:
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='types of A')
parser.add_argument("-t",
choices = ["A", "B"],
dest = "type",
required=True,
action='store',
help="Some help blah blah")
cam_parser = subparsers.add_parser('a1', help='Default')
cam_parser.set_defaults(which='a1')
cam_parser = subparsers.add_parser('a2', help='parse this instead of default')
cam_parser.set_defaults(which='a2')
parser.add_argument("-v",
nargs = '+',
required=True,
dest = "version",
type=int,
action='store',
help="some version help blah blah")
argument = parser.parse_args()
print argument.type
print argument.version
Wielkie dzięki bardzo. Jednak nadal otrzymywałem błąd, gdy minąłem -v z jakiegoś powodu, tj. Oczekiwałem -v, a kiedy przekazałem, dostałem stary błąd "nierozpoznane argumenty". Nawet jeśli przekazałem go przed argumentami pozycyjnymi. Jakieś pomysły? Próbowałem znaleźć podobny przykład, ale nie miałem szczęścia. – user1571144
jest "przed argumentem, który określa, który z poziomów" odnosi się do kodu użytkownika wprowadzającego argument lub do obu? – Nickpick
Wygląda na to, że wykonywanie 'group1 = parser.add_subparsers (help = 'grupa -1')' i 'group2 = parser.add_subparsers (help = 'grupa 2") 'daje' błąd: nie może mieć wielu błędów argumentów'. Miałem nadzieję, że użyję go do grupowania podpoleceń. –