2009-08-10 20 views
41

Có cách nào để làm cho trình tối ưu hóa của Python in giá trị mặc định của tùy chọn hoặc cờ khi hiển thị trợ giúp với --help không?Liệu sự phân biệt của Python có thể hiển thị giá trị mặc định của một tùy chọn không?

+0

Xem SO này: http://stackoverflow.com/questions/12151306/argparse-way-to-include-default-values-in-help –

+0

Nếu ai đó tìm kiếm tương tự cho Argparse: [Argparse: Cách bao gồm giá trị mặc định trong '--help'?] (http://stackoverflow.com/a/12151325/562769) –

Trả lời

54

Hãy thử sử dụng %default chuỗi giữ chỗ:

# This example taken from http://docs.python.org/library/optparse.html#generating-help 
parser.add_option("-m", "--mode", 
        default="intermediate", 
        help="interaction mode: novice, intermediate, " 
         "or expert [default: %default]") 
7

Và nếu bạn cần truy cập chương trình đối với các giá trị mặc định, bạn có thể nhận được với họ thông qua defaults thuộc tính của bộ phân tích (đó là một dict)

7

Và nếu bạn muốn tự động thêm giá trị mặc định vào tất cả các tùy chọn mà bạn đã chỉ định, bạn có thể thực hiện như sau:

for option in parser.option_list: 
    if option.default != ("NO", "DEFAULT"): 
     option.help += (" " if option.help else "") + "[default: %default]" 
0

Đồng các câu hỏi cho câu hỏi của bạn đã cho biết có một cách khác để phân tích đối số được gọi là argparse. Nó được giới thiệu trong Python 3.2. Nó thực sự không dùng optparse nhưng được sử dụng tương tự.

argpass đi kèm với các lớp định dạng khác nhau và ví dụ argparse.ArgumentDefaultsHelpFormatter cũng sẽ in các giá trị mặc định mà không cần phải thao tác chuỗi trợ giúp theo cách thủ công.

Đối tượngParser cho phép định dạng trợ giúp được tùy chỉnh bằng cách chỉ định một lớp định dạng thay thế. Hiện nay, có bốn lớp như:

lớp argparse.RawDescriptionHelpFormatter

lớp argparse.RawTextHelpFormatter

lớp argparse.ArgumentDefaultsHelpFormatter

lớp argparse.MetavarTypeHelpFormatter

Một ví dụ từ tài liệu trăn:

>>> parser = argparse.ArgumentParser(
...  prog='PROG', 
...  formatter_class=argparse.ArgumentDefaultsHelpFormatter) 
>>> parser.add_argument('--foo', type=int, default=42, help='FOO!') 
>>> parser.add_argument('bar', nargs='*', default=[1, 2, 3], help='BAR!') 
>>> parser.print_help() 
usage: PROG [-h] [--foo FOO] [bar [bar ...]] 

positional arguments: 
bar   BAR! (default: [1, 2, 3]) 

optional arguments: 
-h, --help show this help message and exit 
--foo FOO FOO! (default: 42) 

thấy argparse formatting classes

0

Thêm argparse.ArgumentDefaultsHelpFormatter để phân tích cú pháp

import argparse 

    parser = argparse.ArgumentParser(
    description='Your application description', 
    formatter_class=argparse.ArgumentDefaultsHelpFormatter) 

của bạn từ tài liệu:

ArgumentDefaultsHelpFormatter tự động thêm thông tin về giá trị mặc định cho mỗi thông điệp luận giúp đỡ: Blockquote

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