nargs example argumentparser argument arg_parser and add_argument python command-line-arguments argparse

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)