2013-04-05 21 views
35

Có thể yêu cầu đối số argparse là một trong số ít giá trị đặt trước không?Cho phép các giá trị cụ thể cho đối số Argparse

Cách tiếp cận hiện tại của tôi là kiểm tra đối số theo cách thủ công và nếu đó không phải là một trong các giá trị được phép gọi print_help() và thoát.

Đây là việc thực hiện hiện tại:

... 
parser.add_argument('--val', dest='val', action='store', 
         help='Special testing value') 

args = parser.parse_args(sys.argv[1:]) 
if args.val not in ['a','b','c']: 
    parser.print_help() 
    sys.exit(1) 

Nó không phải là điều này đặc biệt khó khăn, nhưng đúng hơn là nó dường như là lộn xộn.

+0

Ồ, bạn đã trả lời câu hỏi này nhanh ... :-P – mgilson

+2

Tôi đã đặt câu hỏi trong IRC, không nhận được phản hồi và đã viết tất cả ở đây. Khi tôi đang đánh bóng câu hỏi, tôi nhận thấy nó trong tài liệu. Vì câu hỏi chưa có trên SO, nó dường như là một ứng cử viên tốt cho câu trả lời tự. – Moshe

+3

Đúng. Và theo [meta] (http://meta.stackexchange.com/questions/2706/posting-and-answering-questions-you-have-already-found-the-answer-to), điều này phù hợp với mục tiêu thiết kế của trang web. Với ý nghĩ đó, +1 cho bạn (hoặc là +2 :-P) – mgilson

Trả lời

56

Một cuộc tranh cãi argparse có thể được giới hạn ở giá trị cụ thể với các tham số choices:

... 
parser.add_argument('--val', dest='val', action='store', 
         choices=['a','b','c'], 
         help='Special testing value') 

args = parser.parse_args(sys.argv[1:]) 

Xem docs để biết thêm chi tiết.

+0

Trả lời câu hỏi của riêng bạn ngay lập tức? Tại sao phải hỏi? – viddik13

+5

Xem nhận xét về câu hỏi. – Moshe

+1

'--val' và' dest = 'val'' là thừa. Cái sau có thể được bỏ qua và nó sẽ được bắt nguồn từ '--val' –

Các vấn đề liên quan