Tôi đã tìm kiếm thông qua tất cả các ví dụ subparser ở đây và nói chung nhưng dường như không thể tìm ra điều đơn giản này.Làm thế nào để sử dụng argpse subparsers một cách chính xác?
Tôi có hai loại var trong đó có một loại có ràng buộc nên suy nghĩ con subparser là con đường để đi. ví dụ. -t cho phép "A" hoặc "B". Nếu người dùng vượt qua "A" thì họ cũng được yêu cầu cũng phải chỉ định nếu đó là "a1" hoặc "a2". Nếu họ chỉ vượt qua "B" thì không có gì.
Tôi có thể làm điều này và có argparse trả lại cho tôi loại "A" nào được chuyển hoặc nếu nó chỉ là "B"?
Phần bên dưới dường như hoạt động nhưng vì một số lý do bị hỏng khi truyền bất kỳ nội dung gì sau phân đoạn.
ví dụ: từ một thiết bị đầu cuối linux
>> python test01.py -t A a1 -v 61
lỗi với ...
usage: test01.py a1 [-h]
test01.py a1: error: unrecognized arguments: -v
Hy vọng rằng có ý nghĩa.
Mã:
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='types of A')
parser.add_argument("-t",
choices = ["A", "B"],
dest = "type",
required=True,
action='store',
help="Some help blah blah")
cam_parser = subparsers.add_parser('a1', help='Default')
cam_parser.set_defaults(which='a1')
cam_parser = subparsers.add_parser('a2', help='parse this instead of default')
cam_parser.set_defaults(which='a2')
parser.add_argument("-v",
nargs = '+',
required=True,
dest = "version",
type=int,
action='store',
help="some version help blah blah")
argument = parser.parse_args()
print argument.type
print argument.version
cảm ơn bạn rất nhiều. Tuy nhiên tôi vẫn nhận được một lỗi khi tôi thông qua -v vì một lý do nào đó nghĩa là nó mong đợi -v và khi tôi đã vượt qua nó tôi đã nhận lỗi cũ của tôi "đối số không được công nhận". Ngay cả khi tôi vượt qua nó trước các lập luận vị trí. Bất kỳ ý tưởng? Tôi đã cố gắng tìm một ví dụ tương tự nhưng không có nhiều may mắn. – user1571144
là 'trước khi đối số xác định subparser' tham chiếu đến mã của người dùng nhập đối số hoặc cả hai? – Nickpick
Nó xuất hiện thực hiện 'nhóm1 = parser.add_subparsers (help = 'subparser nhóm 1')' và 'group2 = parser.add_subparsers (help = 'subparser nhóm 2')' cho 'lỗi: không thể có nhiều đối số subparser' lỗi. Tôi đã hy vọng sử dụng nó để nhóm các tiểu ban. –