Tôi đang sử dụng mô-đun argparse trong Python để phân tích các tham số được nhập trong giao diện dòng lệnh. Tôi có gọi add_argument sau để một đối tượng subparser:Python argparse: metavar và action = store_true cùng nhau
submit_parser.add_argument('-pv','--provision',metavar='PROVISION', dest='PROVISION',
help='provision system',
action='store_true', default=False, required=False)
tôi nhận được lỗi này:
Traceback (most recent call last):
File "./scripts/tp4", line 94, in <module>
main()
File "./scripts/tp4", line 74, in main
modloader.loadModules(sub_parsers)
File "/usr/lib/python2.6/site-packages/tp4/cli/Moduleloader.py", line 66, in loadModules
registered_modules[module_name].setSubparserArgs(module_sub_parser)
File "/usr/lib/python2.6/site-packages/tp4/cli/modules/AutotestModule.py", line 135, in setSubparserArgs
action='store_true', default=False, required=False)
File "/usr/share/tp4/cli/zip/argparse.zip/argparse.py", line 1302, in add_argument
TypeError: __init__() got an unexpected keyword argument 'metavar'
Nếu tôi xóa tác vụ hoặc metavar thông số, nó hoạt động. Tại sao cả hai không thể ở bên nhau? Không có gì về hạn chế này trong tài liệu argparse tại http://docs.python.org/dev/library/argparse.html.
Cảm ơn trước sự giúp đỡ nào
phiên bản python .... là điều quan trọng cần kiểm tra .... – avasal
Không phải bạn đã hỏi, nhưng nếu 'action' là' 'store_true'', giá trị mặc định đã là 'False' (và nếu hành động là ''store_false'' giá trị mặc định là' True'). Nó khá thuận tiện, mặc dù khác với 'optparse' (mặc định là' None' trong cả hai trường hợp). – torek