2008-12-03 24 views
24

Tôi không chắc chắn thông số của được sử dụng cho. Tôi thấy nó được sử dụng xung quanh, nhưng tôi không thể nhìn thấy nó.Python optparse metavar

Ai đó có thể nói rõ cho tôi không? Cảm ơn.

Trả lời

27

Như @Guillaume nói, nó được sử dụng để tạo ra giúp đỡ. Nếu bạn muốn có một tùy chọn có tham số, chẳng hạn như tên tệp, bạn có thể thêm tham số metavar vào cuộc gọi add_option để tên/bộ mô tả đối số ưa thích của bạn được xuất trong thông báo trợ giúp. Từ the current module documentation:

usage = "usage: %prog [options] arg1 arg2" 
parser = OptionParser(usage=usage) 
parser.add_option("-f", "--filename", 
        metavar="FILE", help="write output to FILE"), 

sẽ tạo ra sự giúp đỡ như thế này:

usage: <yourscript> [options] arg1 arg2 

options: 
    -f FILE, --filename=FILE 

Các "FILE" sau khi "-f" và "--filename" xuất phát từ metavar.

0

metavar là biến được sử dụng để in trong màn hình sau tùy chọn. Thường được sử dụng cho mục nhập đề xuất sau khi tùy chọn là FILE hoặc INT hoặc STRING cho người dùng. Nếu không có metavar, optparse sẽ in dest giá trị sau khi bạn đã thêm tùy chọn.

0

Có một cách sử dụng có ý nghĩa khác của metavar nơi người ta muốn sử dụng 'dest' làm thẻ tra cứu đối số nhưng che dấu thông báo trợ giúp bằng metavar. (Ví dụ: đôi khi tiện dụng khi sử dụng subparsers). (Như đã nêu trong chú thích của S.Lott).

parser.add_argument(
     'my_fancy_tag', 
     help='Specify destination', 
     metavar='helpful_message' 
     ) 

hoặc tương đương

parser.add_argument(
     dest='my_fancy_tag', 
     help='Specify destination', 
     metavar='helpful_message' 
     ) 

Trợ giúp sẽ hiển thị các metavar:

./parse.py -h usage: parser [-h] destination 

positional arguments: 
    helpful_message Specify destination 

nhưng dest sẽ lưu trữ các fancy_tag trong Namespace:

./parse.py test 
Namespace(my_fancy_tag='test') 
0

Nó bây giờ thích hợp hơn để sử dụng số argparse thư viện thay vì optparse.

Lý do được đưa ra here.

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