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 un non-sens.
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 le résultat :
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 juste ajouter un if 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 niveau du argparse
afin de profiter de l'impression automatique de l'utilisation.
Idéalement, il faudrait imprimer 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'
Comme ça :
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 heureux :
if args.games <= 0:
parser.print_help()
print "-g/--games: must be positive."
sys.exit(1)