example - ¿Cómo puedo exigir que el argumento de mi script de python sea un flotante entre 0.0-1.0 usando argparse?
python argparse and command line arguments (2)
Aquí hay un método que usa el parámetro de choices
para add_argument
, con una clase personalizada que se considera "igual" a cualquier flotante dentro del rango especificado:
import argparse
class Range(object):
def __init__(self, start, end):
self.start = start
self.end = end
def __eq__(self, other):
return self.start <= other <= self.end
parser = argparse.ArgumentParser()
parser.add_argument(''--foo'', type=float, choices=[Range(0.0, 1.0)])
Me gustaría usar argparse
en Python 2.7 para requerir que uno de los parámetros de mi script esté entre el rango de 0.0 y 1.0. ¿ argparse.add_argument()
soporta esto?
El parámetro de type
para add_argument
solo necesita ser un objeto llamable que toma una cadena y devuelve un valor convertido. Puede escribir una envoltura alrededor de float
que verifique su valor y genere un error si está fuera de rango.
def restricted_float(x):
x = float(x)
if x < 0.0 or x > 1.0:
raise argparse.ArgumentTypeError("%r not in range [0.0, 1.0]"%(x,))
return x
p = argparse.ArgumentParser()
p.add_argument("--arg", type=restricted_float)