El título resume bastante bien lo que me gustaría que sucediera.
Esto es lo que tengo, y aunque el programa no explota en un número entero no positivo, quiero que se informe al usuario que un número entero no positivo es básicamente una tontería.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-g", "--games", type=int, default=162,
help="The number of games to simulate")
args = parser.parse_args()
Y la salida:
python simulate_many.py -g 20
Setting up...
Playing games...
....................
Salida con un negativo:
python simulate_many.py -g -2
Setting up...
Playing games...
Ahora, obviamente, podría agregar un if para determinar que if args.games
es negativo, pero tenía curiosidad por saber si había una manera de atraparlo en el argparse
nivel, para aprovechar la impresión de uso automático.
Idealmente, imprimiría algo similar a esto:
python simulate_many.py -g a
usage: simulate_many.py [-h] [-g GAMES] [-d] [-l LEAGUE]
simulate_many.py: error: argument -g/--games: invalid int value: 'a'
Al igual que:
python simulate_many.py -g -2
usage: simulate_many.py [-h] [-g GAMES] [-d] [-l LEAGUE]
simulate_many.py: error: argument -g/--games: invalid positive int value: '-2'
Por ahora estoy haciendo esto, y creo que estoy feliz:
if args.games <= 0:
parser.print_help()
print "-g/--games: must be positive."
sys.exit(1)