Cómo permitir solo números enteros positivos usando argparse [duplicado]
Nov 24 2020
Lo tengo donde si el usuario no ingresa un num2, tomará 1 como número predeterminado. Sin embargo, también estoy tratando de implementar donde, si el usuario ingresa un número, debe estar por encima de 0.
import argparse
group = parser.add_mutually_exclusive_group()
group.add_argument('-n2', '--num2', action='store_true', default=1, choices=range(0))
Miré a mi alrededor y encontré que las opciones = rangos me permiten establecer un rango para el número, sin embargo, aparece un error que dice
TypeError: __init__() got an unexpected keyword argument 'choices'
Respuestas
3 MinhNguyen Nov 24 2020 at 11:42
Puede usar typepara verificar la entrada de números enteros positivos de la siguiente manera:
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
Después de realizar algunos cambios en los parámetros, pude resolver los problemas. Aunque no estoy seguro de si esto es lo mismo que quieres
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-n2', '--num2', default=1, type=int,choices=range(0))
Acabo de eliminar la acción y funciona bien. También soy nuevo en Python, así que avíseme si no es lo que necesita