Tiêu đề khá nhiều tóm tắt những gì tôi muốn xảy ra.
Đây là những gì tôi có, và trong khi chương trình không thổi vào một số nguyên không có chủ đích, tôi muốn người dùng được thông báo rằng một số nguyên không có chủ đích về cơ bản là vô nghĩ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()
Và đầu ra:
python simulate_many.py -g 20
Setting up...
Playing games...
....................
Đầu ra có âm:
python simulate_many.py -g -2
Setting up...
Playing games...
Bây giờ, rõ ràng tôi chỉ có thể thêm một if để xác định if args.games
là âm tính, nhưng tôi tò mò liệu có cách nào để bẫy nó ở argparse
cấp độ không, để tận dụng lợi thế của việc in sử dụng tự động.
Lý tưởng nhất, nó sẽ in một cái gì đó tương tự như thế này:
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'
Thích như vậy:
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'
Hiện tại tôi đang làm điều này và tôi đoán tôi rất vui:
if args.games <= 0:
parser.print_help()
print "-g/--games: must be positive."
sys.exit(1)