Tại sao không phân tích cú pháp các đối số này?Argparse thứ tự không chính xác của các tham số vị trí và tùy chọn
--foo 1 2 3 bar
Sử dụng
parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='+')
parser.add_argument('bar')
mang đến cho các lỗi sau:
error: too few arguments
Nếu tôi vượt qua đối số thanh đầu tiên, mặc dù nó hoạt động:
bar --foo 1 2 3
Bây giờ, điều này bản thân nó không quá tệ. Tôi có thể sống với việc có các đối số vị trí đầu tiên nó chỉ rằng hành vi này là không phù hợp với sự giúp đỡ argparse tạo ra cho chúng ta, trong đó nêu rằng thanh nên cuối cùng:
usage: argparsetest.py [-h] [--foo FOO [FOO ...]] bar
Vì vậy, làm thế nào để bạn thực hiện công việc này với sự giúp đỡ văn bản phù hợp ?
Dưới đây là hoàn tất test program.
Đã chuyển sang cùng một vấn đề ngay bây giờ. Người ta có thể sử dụng '--' để kết thúc' nargs' globbing, vì vậy '--foo 1 2 3 - bar' sẽ làm việc trong ví dụ trên của bạn. Nó thực sự cần được giải quyết tự động, đặt số lượng các đối số cần thiết cho các đối số vị trí, theo ý kiến của tôi. Có các cuộc thảo luận về vấn đề mở này tại http://bugs.python.org/issue9338 và http://bugs.python.org/issue9182 (ít nhất nó phải được ghi chép rõ ràng). –