Der Titel fasst ziemlich genau zusammen, was ich gerne gemacht hätte.
Folgendes habe ich, und obwohl das Programm keine nicht positive Ganzzahl in die Luft jagt, möchte ich, dass der Benutzer darüber informiert wird, dass eine nicht positive Ganzzahl im Grunde genommen Unsinn ist.
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()
Und die Ausgabe:
python simulate_many.py -g 20
Setting up...
Playing games...
....................
Ausgabe mit einem Negativ:
python simulate_many.py -g -2
Setting up...
Playing games...
Jetzt könnte ich natürlich nur ein Wenn hinzufügen, um festzustellen if args.games
, ob es negativ ist, aber ich war neugierig, ob es eine Möglichkeit gibt, es auf der argparse
Ebene abzufangen, um den automatischen Verwendungsdruck zu nutzen.
Im Idealfall würde es etwas Ähnliches drucken:
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'
Wie so:
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'
Im Moment mache ich das und ich denke, ich bin glücklich:
if args.games <= 0:
parser.print_help()
print "-g/--games: must be positive."
sys.exit(1)