Câu trả lời ngắn là bạn không thể làm điều đó bởi vì nargs không hỗ trợ cái gì đó như '2+'.
Long trả lời là bạn có thể workaround rằng việc sử dụng một cái gì đó như thế này:
parser = argparse.ArgumentParser(usage='%(prog)s [-h] file file [file ...]')
parser.add_argument('file1', nargs=1, metavar='file')
parser.add_argument('file2', nargs='+', metavar='file', help=argparse.SUPPRESS)
namespace = parser.parse_args()
namespace.file = namespace.file1 + namespace.file2
Các thủ đoạn mà bạn cần là:
- Sử dụng
usage
cung cấp cho bạn sở hữu chuỗi sử dụng để phân tích cú pháp
- Sử dụng
metavar
để hiển thị đối số có tên khác trong chuỗi trợ giúp
- Sử dụng
SUPPRESS
để tránh hiển thị trợ giúp cho một trong các biến
- Merge hai biến khác nhau chỉ cần thêm một thuộc tính mới cho đối tượng
Namespace
rằng phân tích cú pháp trả
Ví dụ trên tạo ra chuỗi trợ giúp sau:
usage: test.py [-h] file file [file ...]
positional arguments:
file
optional arguments:
-h, --help show this help message and exit
và sẽ vẫn không thành công khi ít hơn hai đối số được thông qua:
$ python test.py arg
usage: test.py [-h] file file [file ...]
test.py: error: too few arguments
Ngoài ra, hãy xem http://stackoverflow.com/quest các ion/4194948/python-argparse-là-có-một-cách-để-chỉ định-một-phạm vi-trong-nargs. Điều đó cho phép sự linh hoạt hơn, mà không gây rối (hoặc lộn xộn) với văn bản trợ giúp. – Evert