Le titre résume assez bien ce que j'aimerais qu'il se passe.
Voici ce que j'ai, et bien que le programme n'explose pas sur un entier non positif, je veux que l'utilisateur soit informé qu'un entier non positif est fondamentalement insensé.
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()
Et la sortie:
python simulate_many.py -g 20
Setting up...
Playing games...
....................
Sortie avec un négatif:
python simulate_many.py -g -2
Setting up...
Playing games...
Maintenant, évidemment, je pourrais simplement ajouter un si pour déterminer if args.games
est négatif, mais j'étais curieux de savoir s'il y avait un moyen de le piéger au argparse
niveau, afin de profiter de l'impression d'utilisation automatique.
Idéalement, il imprimerait quelque chose de similaire à ceci:
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'
Ainsi:
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'
Pour l'instant, je fais ça, et je suppose que je suis content:
if args.games <= 0:
parser.print_help()
print "-g/--games: must be positive."
sys.exit(1)