Jak zezwolić tylko na dodatnią liczbę całkowitą za pomocą argparse [duplicate]
Nov 24 2020
Mam to gdzie, jeśli użytkownik nie wprowadzi num2, przyjmie 1 jako domyślną liczbę. Jednak próbuję również zaimplementować, gdzie jeśli użytkownik WPROWADZI liczbę, musi być powyżej 0.
import argparse
group = parser.add_mutually_exclusive_group()
group.add_argument('-n2', '--num2', action='store_true', default=1, choices=range(0))
Rozejrzałem się i stwierdziłem, że opcje options = zakresy pozwalają mi ustawić zakres dla liczby, jednak pojawia się komunikat o błędzie
TypeError: __init__() got an unexpected keyword argument 'choices'
Odpowiedzi
3 MinhNguyen Nov 24 2020 at 11:42
Możesz użyć type
do sprawdzenia dodatniej liczby całkowitej w następujący sposób:
import argparse
def check_positive(value):
try:
value = int(value)
if value <= 0:
raise argparse.ArgumentTypeError("{} is not a positive integer".format(value))
except ValueError:
raise Exception("{} is not an integer".format(value))
return value
parser = argparse.ArgumentParser(...)
parser.add_argument('--foo', type=check_positive)
args = parser.parse_args()
print('args: {}'.format(args.foo))
1 SachinRajput Nov 24 2020 at 11:45
Po wprowadzeniu kilku zmian parametrów udało mi się rozwiązać problemy. Nie jestem jednak pewien, czy to jest to samo, czego chcesz
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-n2', '--num2', default=1, type=int,choices=range(0))
Właśnie usunąłem akcję i działa dobrze. Jestem też nowy w Pythonie, więc daj mi znać, jeśli to nie jest to, czego potrzebujesz