Como permitir apenas números inteiros positivos usando argparse [duplicado]
Nov 24 2020
Eu tenho para onde, se o usuário não inserir um num2, terá 1 como um número padrão. No entanto, também estou tentando implementar onde, se o usuário inserir um número, ele deve estar acima de 0.
import argparse
group = parser.add_mutually_exclusive_group()
group.add_argument('-n2', '--num2', action='store_true', default=1, choices=range(0))
Eu olhei em volta e descobri que escolhas = intervalos me permite definir um intervalo para o número, no entanto, recebo um erro dizendo
TypeError: __init__() got an unexpected keyword argument 'choices'
Respostas
3 MinhNguyen Nov 24 2020 at 11:42
Você pode usar type
para verificar a entrada de número inteiro positivo da seguinte maneira:
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
Depois de fazer algumas alterações nos parâmetros, consegui resolver os problemas. Não tenho certeza se isso é a mesma coisa que você quer
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-n2', '--num2', default=1, type=int,choices=range(0))
Acabei de remover a ação e funciona bem. Eu também sou novo em python, então deixe-me saber se não é o que você precisava
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino