Wie man mit argparse [Duplikat] nur positive Ganzzahlen zulässt

Nov 24 2020

Ich habe es dahin, wo, wenn der Benutzer keine num2 eingibt, 1 als Standardnummer verwendet wird. Ich versuche jedoch auch zu implementieren, dass, wenn der Benutzer eine Zahl eingibt, diese über 0 liegen muss.

import argparse
group = parser.add_mutually_exclusive_group()

group.add_argument('-n2', '--num2', action='store_true', default=1, choices=range(0))

Ich habe mich umgesehen und festgestellt, dass durch Auswahl = Bereiche ein Bereich für die Zahl festgelegt werden kann. Es wird jedoch eine Fehlermeldung angezeigt

TypeError: __init__() got an unexpected keyword argument 'choices'

Antworten

3 MinhNguyen Nov 24 2020 at 11:42

Sie können typewie folgt nach positiven Ganzzahl-Eingaben suchen:

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

Nach einigen Parameteränderungen konnte ich die Probleme beheben. Ich bin mir nicht sicher, ob dies das gleiche ist, was Sie wollen

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-n2', '--num2',  default=1, type=int,choices=range(0))

Ich habe gerade die Aktion entfernt und es funktioniert gut. Ich bin auch neu in Python, also lass es mich wissen, wenn es nicht das ist, was du brauchst