2012-11-04 37 views
8

Tôi đang tạo tập lệnh sử dụng các đối số để định cấu hình hành vi và sẽ đọc số tệp không xác định. Sử dụng mã sau đây cho phép tôi đọc một tệp duy nhất. Có cách nào để thực hiện điều đó mà không cần phải đặt một đối số khác, cho biết có bao nhiêu tệp mà tập lệnh nên đọc không?argparse: Nhận số đối số không xác định

parser = argparse.ArgumentParser() 
parser.add_argument("FILE", help="File to store as Gist") 
parser.add_argument("-p", "--private", action="store_true", help="Make Gist private") 

Trả lời

22

Có, thay đổi dòng "FILE" của bạn để:

parser.add_argument("FILE", help="File to store as Gist", nargs="+") 

này sẽ thu thập tất cả các đối số vị trí trong danh sách để thay thế. Nó cũng sẽ tạo ra một lỗi nếu không có ít nhất một để hoạt động.

Kiểm tra ra Cách sử dụng nargs documentation

+0

Vậy đó, cảm ơn. Tôi tự hỏi tại sao nó không có trong hướng dẫn argparse. – braindump

+1

http://docs.python.org/2/library/argparse.html#nargs – user2753523

+0

Đây là vinh quang – pele88

5
import argparse 

parser = argparse.ArgumentParser() 

parser.add_argument('-FILE', action='append', dest='collection', 
        default=[], 
        help='Add repeated values to a list', 
        ) 

:

python argparse_demo.py -FILE "file1.txt" -FILE "file2.txt" -FILE "file3.txt" 

Và trong mã python của bạn, bạn có thể truy cập vào các trong biến collection, trong đó chủ yếu sẽ là một danh sách, một danh sách rỗng bởi mặc định; và một danh sách chứa số lượng đối số tùy ý bạn cung cấp cho nó.

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