Trang này chứa thông tin tham chiếu API. Để có phần giới thiệu nhẹ nhàng hơn về phân tích cú pháp dòng lệnh Python, hãy xem
Mô-đun giúp dễ dàng viết các giao diện dòng lệnh thân thiện với người dùng. Chương trình xác định những đối số mà nó yêu cầu và sẽ tìm ra cách phân tích những đối số đó ra khỏi. Mô-đun cũng tự động tạo thông báo trợ giúp và sử dụng. Mô-đun cũng sẽ báo lỗi khi người dùng cung cấp cho chương trình các đối số không hợp lệ
Chức năng cốt lõi
Hỗ trợ của mô-đun cho các giao diện dòng lệnh được xây dựng xung quanh một phiên bản của. Nó là nơi chứa các thông số kỹ thuật đối số và có các tùy chọn áp dụng toàn bộ trình phân tích cú pháp
parser = argparse.ArgumentParser[ prog = 'ProgramName', description = 'What the program does', epilog = 'Text at the bottom of help']
Phương thức đính kèm các thông số kỹ thuật đối số riêng lẻ vào trình phân tích cú pháp. Nó hỗ trợ các đối số vị trí, các tùy chọn chấp nhận giá trị và cờ bật/tắt
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
Phương thức chạy trình phân tích cú pháp và đặt dữ liệu được trích xuất vào một đối tượng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
Liên kết nhanh cho add_argument[]
Tên
Sự miêu tả
giá trị
Chỉ định cách xử lý một đối số
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag11,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag12,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag13,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag14,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag15,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag16,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag17,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag18
Giới hạn các giá trị cho một tập hợp các lựa chọn cụ thể
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag19,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag20 hoặc ví dụ
Lưu trữ một giá trị không đổi
Giá trị mặc định được sử dụng khi không cung cấp đối số
Mặc định là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag22
Chỉ định tên thuộc tính được sử dụng trong không gian tên kết quả
Thông báo trợ giúp cho một đối số
Tên hiển thị thay thế cho đối số như được hiển thị trong phần trợ giúp
Số lần đối số có thể được sử dụng
,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag24,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag25,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag26 hoặc
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag27
Cho biết đối số là bắt buộc hay tùy chọn
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag28 hoặc
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag29
Tự động chuyển đổi một đối số thành loại đã cho
, ,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag32 hoặc chức năng có thể gọi được
Ví dụ
Đoạn mã sau là một chương trình Python lấy danh sách các số nguyên và tạo ra tổng hoặc giá trị lớn nhất
args = parser.parse_args[] print[args.filename, args.count, args.verbose]1
Giả sử mã Python ở trên được lưu vào một tệp có tên là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag33, nó có thể chạy ở dòng lệnh và nó cung cấp các thông báo trợ giúp hữu ích
args = parser.parse_args[] print[args.filename, args.count, args.verbose]3
Khi chạy với các đối số thích hợp, nó sẽ in tổng hoặc giá trị lớn nhất của các số nguyên dòng lệnh
args = parser.parse_args[] print[args.filename, args.count, args.verbose]4
Nếu đối số không hợp lệ được truyền vào, một lỗi sẽ được hiển thị
args = parser.parse_args[] print[args.filename, args.count, args.verbose]5
Các phần sau đây hướng dẫn bạn qua ví dụ này
Tạo trình phân tích cú pháp
Bước đầu tiên trong việc sử dụng là tạo một đối tượng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]6
Đối tượng sẽ chứa tất cả thông tin cần thiết để phân tích dòng lệnh thành các kiểu dữ liệu Python
Thêm đối số
Việc điền thông tin về các đối số của chương trình được thực hiện bằng cách gọi phương thức. Nói chung, các cuộc gọi này cho biết cách lấy các chuỗi trên dòng lệnh và biến chúng thành các đối tượng. Thông tin này được lưu trữ và sử dụng khi được gọi. Ví dụ
args = parser.parse_args[] print[args.filename, args.count, args.verbose]7
Sau đó, gọi sẽ trả về một đối tượng có hai thuộc tính,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag42 và
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag43. Thuộc tính
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag42 sẽ là danh sách một hoặc nhiều số nguyên và thuộc tính
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag43 sẽ là hàm, nếu
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag47 được chỉ định tại dòng lệnh hoặc hàm nếu không được chỉ định
Phân tích đối số
phân tích các đối số thông qua phương thức. Điều này sẽ kiểm tra dòng lệnh, chuyển đổi từng đối số thành loại thích hợp và sau đó gọi hành động thích hợp. Trong hầu hết các trường hợp, điều này có nghĩa là một đối tượng đơn giản sẽ được xây dựng từ các thuộc tính được phân tích cú pháp từ dòng lệnh
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag3
Trong một tập lệnh, thường sẽ được gọi mà không có đối số và sẽ tự động xác định các đối số dòng lệnh từ
Đối tượng ArgumentParser
lớp argparse. Trình phân tích đối số[prog=Không có . HelpFormatter, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter , prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True, exit_on_error=True]Tạo một đối tượng mới. Tất cả các tham số phải được chuyển thành đối số từ khóa. Mỗi tham số có mô tả chi tiết hơn bên dưới, nhưng tóm lại chúng là
- Tên chương trình [mặc định.
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
56]- Chuỗi mô tả cách sử dụng chương trình [mặc định. được tạo từ các đối số được thêm vào trình phân tích cú pháp]
- Văn bản hiển thị trước trợ giúp đối số [theo mặc định, không có văn bản]
- Văn bản để hiển thị sau đối số trợ giúp [theo mặc định, không có văn bản]
- Một danh sách các đối tượng có đối số cũng nên được đưa vào
- Một lớp để tùy chỉnh đầu ra trợ giúp
- Tập hợp các ký tự tiền tố đối số tùy chọn [mặc định. ‘-‘]
- Tập hợp các ký tự tiền tố tệp mà từ đó các đối số bổ sung sẽ được đọc [mặc định.
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
22]- Giá trị mặc định chung cho các đối số [mặc định.
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
22]- Chiến lược giải quyết các tùy chọn xung đột [thường không cần thiết]
- Thêm tùy chọn
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
60 vào trình phân tích cú pháp [mặc định.parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
28]- Cho phép viết tắt các tùy chọn dài nếu từ viết tắt rõ ràng. [mặc định.
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
28]- Xác định xem ArgumentParser có thoát với thông tin lỗi hay không khi xảy ra lỗi. [mặc định.
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
28]
Đã thay đổi trong phiên bản 3. 5. tham số allow_abrev đã được thêm vào.
Đã thay đổi trong phiên bản 3. 8. Trong các phiên bản trước, allow_abrev cũng đã vô hiệu hóa việc nhóm các cờ ngắn, chẳng hạn như
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag64 có nghĩa là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag65.
Đã thay đổi trong phiên bản 3. 9. tham số exit_on_error đã được thêm vào.
Các phần sau đây mô tả cách sử dụng từng phần này
ăn xin
Theo mặc định, các đối tượng sử dụng
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag67 để xác định cách hiển thị tên của chương trình trong thông báo trợ giúp. Mặc định này hầu như luôn được mong muốn vì nó sẽ làm cho các thông báo trợ giúp khớp với cách chương trình được gọi trên dòng lệnh. Ví dụ: xem xét tệp có tên
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag68 với mã sau
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag0
Phần trợ giúp cho chương trình này sẽ hiển thị tên chương trình là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag68 [bất kể chương trình được gọi từ đâu]
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag1
Để thay đổi hành vi mặc định này, một giá trị khác có thể được cung cấp bằng cách sử dụng đối số
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag70 để
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag2
Lưu ý rằng tên chương trình, dù được xác định từ
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag67 hay từ đối số
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag70, đều có sẵn để trợ giúp các thông báo sử dụng định dạng định dạng
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag74
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag3
cách sử dụng
Theo mặc định, tính toán thông báo sử dụng từ các đối số mà nó chứa
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag4
Thông báo mặc định có thể được ghi đè bằng đối số từ khóa
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag76
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag5
Trình xác định định dạng
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag74 có sẵn để điền tên chương trình vào thông báo sử dụng của bạn
sự miêu tả
Hầu hết các cuộc gọi đến hàm tạo sẽ sử dụng đối số từ khóa
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag79. Đối số này đưa ra một mô tả ngắn gọn về những gì chương trình làm và cách thức hoạt động của nó. Trong thông báo trợ giúp, mô tả được hiển thị giữa chuỗi sử dụng dòng lệnh và thông báo trợ giúp cho các đối số khác nhau
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag6
Theo mặc định, mô tả sẽ được ngắt dòng sao cho phù hợp với không gian nhất định. Để thay đổi hành vi này, hãy xem đối số
phần kết
Một số chương trình muốn hiển thị mô tả bổ sung của chương trình sau mô tả của các đối số. Văn bản như vậy có thể được chỉ định bằng cách sử dụng đối số
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag80 để
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag7
Đối với đối số, văn bản
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag80 theo mặc định được ngắt dòng, nhưng hành vi này có thể được điều chỉnh với đối số thành
bố mẹ
Đôi khi, một số trình phân tích cú pháp chia sẻ một bộ đối số chung. Thay vì lặp lại các định nghĩa của các đối số này, có thể sử dụng một trình phân tích cú pháp duy nhất với tất cả các đối số được chia sẻ và chuyển tới đối số
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag84. Đối số
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag84 lấy một danh sách các đối tượng, thu thập tất cả các hành động vị trí và tùy chọn từ chúng và thêm các hành động này vào đối tượng đang được xây dựng
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag8
Lưu ý rằng hầu hết các trình phân tích cú pháp chính sẽ chỉ định
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag89. Nếu không, sẽ thấy hai tùy chọn
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag60 [một ở cha và một ở con] và đưa ra lỗi
Ghi chú
Bạn phải khởi tạo đầy đủ trình phân tích cú pháp trước khi chuyển chúng qua
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag84. Nếu bạn thay đổi trình phân tích cú pháp gốc sau trình phân tích cú pháp con, những thay đổi đó sẽ không được phản ánh trong trình phân tích cú pháp con
định dạng_class
các đối tượng cho phép tùy chỉnh định dạng trợ giúp bằng cách chỉ định một lớp định dạng thay thế. Hiện tại, có bốn lớp như vậy
lớp argparse. RawDescriptionHelpFormatterlớp argparse. RawTextHelpFormatterlớp argparse. ArgumentDefaultsHelpFormatterlớp argparse. MetavarTypeHelpFormattervà cung cấp nhiều quyền kiểm soát hơn đối với cách hiển thị các mô tả bằng văn bản. Theo mặc định, các đối tượng ngắt dòng và văn bản trong thông báo trợ giúp dòng lệnh
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag9
Chuyển dưới dạng
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag98 cho biết điều đó và đã được định dạng chính xác và không được ngắt dòng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]0
duy trì khoảng trắng cho tất cả các loại văn bản trợ giúp, bao gồm cả mô tả đối số. Tuy nhiên, nhiều dòng mới được thay thế bằng một. Nếu bạn muốn giữ nguyên nhiều dòng trống, hãy thêm khoảng cách giữa các dòng mới
tự động thêm thông tin về các giá trị mặc định vào từng thông báo trợ giúp đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]1
sử dụng tên của đối số cho mỗi đối số làm tên hiển thị cho các giá trị của nó [thay vì sử dụng như trình định dạng thông thường thực hiện]
args = parser.parse_args[] print[args.filename, args.count, args.verbose]2
tiền tố_chars
Hầu hết các tùy chọn dòng lệnh sẽ sử dụng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]02 làm tiền tố, e. g.
args = parser.parse_args[] print[args.filename, args.count, args.verbose]03. Trình phân tích cú pháp cần hỗ trợ các ký tự tiền tố khác hoặc bổ sung, e. g. đối với các tùy chọn như
args = parser.parse_args[] print[args.filename, args.count, args.verbose]04 hoặc
args = parser.parse_args[] print[args.filename, args.count, args.verbose]05, có thể chỉ định chúng bằng cách sử dụng đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]06 cho hàm tạo ArgumentParser
args = parser.parse_args[] print[args.filename, args.count, args.verbose]3
Đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]06 mặc định là
args = parser.parse_args[] print[args.filename, args.count, args.verbose]08. Việc cung cấp một bộ ký tự không bao gồm
args = parser.parse_args[] print[args.filename, args.count, args.verbose]02 sẽ khiến các tùy chọn
args = parser.parse_args[] print[args.filename, args.count, args.verbose]03 không được phép
fromfile_prefix_chars
Đôi khi, khi xử lý một danh sách đối số đặc biệt dài, có thể nên giữ danh sách đối số trong một tệp thay vì nhập nó ra ở dòng lệnh. Nếu đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]11 được cung cấp cho hàm tạo, thì các đối số bắt đầu bằng bất kỳ ký tự nào được chỉ định sẽ được coi là tệp và sẽ được thay thế bằng các đối số mà chúng chứa. Ví dụ
args = parser.parse_args[] print[args.filename, args.count, args.verbose]4
Các đối số được đọc từ một tệp theo mặc định phải là một đối số trên mỗi dòng [nhưng cũng xem ] và được xử lý như thể chúng ở cùng một vị trí với đối số tham chiếu tệp gốc trên dòng lệnh. Vì vậy, trong ví dụ trên, biểu thức
args = parser.parse_args[] print[args.filename, args.count, args.verbose]14 được coi là tương đương với biểu thức
args = parser.parse_args[] print[args.filename, args.count, args.verbose]15
Đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]11 mặc định là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag22, nghĩa là các đối số sẽ không bao giờ được coi là tham chiếu tệp
đối số_default
Nói chung, giá trị mặc định của đối số được chỉ định bằng cách chuyển giá trị mặc định cho hoặc bằng cách gọi các phương thức với một tập hợp cụ thể các cặp tên-giá trị. Tuy nhiên, đôi khi, có thể hữu ích khi chỉ định một mặc định trên toàn bộ trình phân tích cú pháp cho các đối số. Điều này có thể được thực hiện bằng cách chuyển đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]20 tới. Ví dụ: để ngăn chặn toàn bộ việc tạo thuộc tính trong các cuộc gọi, chúng tôi cung cấp _____223
args = parser.parse_args[] print[args.filename, args.count, args.verbose]5
allow_abbrev
Thông thường, khi bạn chuyển một danh sách đối số sang phương thức của một tùy chọn dài
Có thể tắt tính năng này bằng cách đặt
args = parser.parse_args[] print[args.filename, args.count, args.verbose]26 thành
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag29
args = parser.parse_args[] print[args.filename, args.count, args.verbose]6
Mới trong phiên bản 3. 5
xung đột_handler
các đối tượng không cho phép hai hành động với cùng một chuỗi tùy chọn. Theo mặc định, các đối tượng đưa ra một ngoại lệ nếu một nỗ lực được thực hiện để tạo một đối số với một chuỗi tùy chọn đã được sử dụng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]7
Đôi khi [đ. g. khi sử dụng ], có thể hữu ích khi ghi đè bất kỳ đối số cũ hơn nào bằng cùng một chuỗi tùy chọn. Để có được hành vi này, giá trị
args = parser.parse_args[] print[args.filename, args.count, args.verbose]30 có thể được cung cấp cho đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]31 của
args = parser.parse_args[] print[args.filename, args.count, args.verbose]8
Lưu ý rằng các đối tượng chỉ xóa một hành động nếu tất cả các chuỗi tùy chọn của nó bị ghi đè. Vì vậy, trong ví dụ trên, tác vụ
args = parser.parse_args[] print[args.filename, args.count, args.verbose]03 cũ được giữ lại làm tác vụ
args = parser.parse_args[] print[args.filename, args.count, args.verbose]35, vì chỉ có chuỗi tùy chọn
args = parser.parse_args[] print[args.filename, args.count, args.verbose]36 bị ghi đè
add_help
Theo mặc định, các đối tượng ArgumentParser thêm một tùy chọn chỉ hiển thị thông báo trợ giúp của trình phân tích cú pháp. Ví dụ: xem xét tệp có tên
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag68 chứa mã sau
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag0
Nếu
args = parser.parse_args[] print[args.filename, args.count, args.verbose]38 hoặc
args = parser.parse_args[] print[args.filename, args.count, args.verbose]39 được cung cấp tại dòng lệnh, phần trợ giúp ArgumentParser sẽ được in
args = parser.parse_args[] print[args.filename, args.count, args.verbose]10
Đôi khi, có thể hữu ích khi vô hiệu hóa việc bổ sung tùy chọn trợ giúp này. Điều này có thể đạt được bằng cách chuyển
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag29 làm đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]41 cho
args = parser.parse_args[] print[args.filename, args.count, args.verbose]11
Tùy chọn trợ giúp thường là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag60. Ngoại lệ đối với điều này là nếu
args = parser.parse_args[] print[args.filename, args.count, args.verbose]06 được chỉ định và không bao gồm
args = parser.parse_args[] print[args.filename, args.count, args.verbose]02, trong trường hợp đó,
args = parser.parse_args[] print[args.filename, args.count, args.verbose]38 và
args = parser.parse_args[] print[args.filename, args.count, args.verbose]39 không phải là các tùy chọn hợp lệ. Trong trường hợp này, ký tự đầu tiên trong
args = parser.parse_args[] print[args.filename, args.count, args.verbose]48 được sử dụng làm tiền tố cho các tùy chọn trợ giúp
args = parser.parse_args[] print[args.filename, args.count, args.verbose]12
exit_on_error
Thông thường, khi bạn chuyển một danh sách đối số không hợp lệ sang phương thức của một , nó sẽ thoát với thông tin lỗi
Nếu người dùng muốn bắt lỗi theo cách thủ công, tính năng này có thể được bật bằng cách đặt
args = parser.parse_args[] print[args.filename, args.count, args.verbose]51 thành
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag29
args = parser.parse_args[] print[args.filename, args.count, args.verbose]13
Mới trong phiên bản 3. 9
Phương thức add_argument[]
Trình phân tích đối số. add_argument[tên hoặc cờ. [ , hành động][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest]]Xác định cách phân tích cú pháp một đối số dòng lệnh. Mỗi tham số có mô tả chi tiết hơn bên dưới, nhưng tóm lại chúng là
- Tên hoặc danh sách các chuỗi tùy chọn, e. g.
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
53 hoặcargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
54- Loại hành động cơ bản được thực hiện khi gặp đối số này tại dòng lệnh
- Số lượng đối số dòng lệnh nên được sử dụng
- Một giá trị không đổi theo yêu cầu của một số và lựa chọn
- Giá trị được tạo nếu đối số không có trong dòng lệnh và nếu nó không có trong đối tượng không gian tên
- Loại mà đối số dòng lệnh sẽ được chuyển đổi
- Vùng chứa các giá trị được phép cho đối số
- Có thể bỏ qua tùy chọn dòng lệnh hay không [chỉ tùy chọn]
- Một mô tả ngắn gọn về những gì lập luận làm
- Tên cho đối số trong thông báo sử dụng
- Tên của thuộc tính sẽ được thêm vào đối tượng được trả về bởi
Các phần sau đây mô tả cách sử dụng từng phần này
tên hoặc cờ
Phương thức phải biết liệu một đối số tùy chọn, như
args = parser.parse_args[] print[args.filename, args.count, args.verbose]35 hoặc
args = parser.parse_args[] print[args.filename, args.count, args.verbose]36, hoặc một đối số vị trí, như danh sách tên tệp, có được mong đợi hay không. Do đó, các đối số đầu tiên được chuyển đến phải là một chuỗi các cờ hoặc một tên đối số đơn giản
Ví dụ: một đối số tùy chọn có thể được tạo như
args = parser.parse_args[] print[args.filename, args.count, args.verbose]14
trong khi một đối số vị trí có thể được tạo ra như
args = parser.parse_args[] print[args.filename, args.count, args.verbose]15
Khi được gọi, các đối số tùy chọn sẽ được xác định bằng tiền tố
args = parser.parse_args[] print[args.filename, args.count, args.verbose]02 và các đối số còn lại sẽ được coi là vị trí
args = parser.parse_args[] print[args.filename, args.count, args.verbose]16
hoạt động
các đối tượng liên kết các đối số dòng lệnh với các hành động. Những hành động này có thể thực hiện bất cứ điều gì với các đối số dòng lệnh được liên kết với chúng, mặc dù hầu hết các hành động chỉ cần thêm một thuộc tính vào đối tượng được trả về bởi. Đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]64 chỉ định cách xử lý các đối số dòng lệnh. Các hành động được cung cấp là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
11 - Điều này chỉ lưu trữ giá trị của đối số. Đây là hành động mặc định. Ví dụargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
17parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
12 - Điều này lưu trữ giá trị được chỉ định bởi đối số từ khóa; . Hành độngparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
12 được sử dụng phổ biến nhất với các đối số tùy chọn chỉ định một số loại cờ. Ví dụargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
18parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
13 vàargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
70 - Đây là những trường hợp đặc biệt củaparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
12 được sử dụng để lưu trữ các giá trịparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
28 vàparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
29 tương ứng. Ngoài ra, chúng tạo ra các giá trị mặc định lần lượt làparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
29 vàparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
28. Ví dụargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
19parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
14 - Cái này lưu danh sách và nối từng giá trị đối số vào danh sách. Sẽ rất hữu ích khi cho phép một tùy chọn được chỉ định nhiều lần. Nếu giá trị mặc định không trống, thì các phần tử mặc định sẽ xuất hiện trong giá trị được phân tích cú pháp cho tùy chọn, với bất kỳ giá trị nào từ dòng lệnh được thêm vào sau các giá trị mặc định đó. Ví dụ sử dụngargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
30parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
15 - Thao tác này lưu danh sách và nối thêm giá trị được chỉ định bởi đối số từ khóa vào danh sách; . Hành độngparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
15 thường hữu ích khi nhiều đối số cần lưu trữ các hằng số vào cùng một danh sách. Ví dụargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
31parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
16 - Điều này đếm số lần đối số từ khóa xảy ra. Ví dụ: điều này hữu ích để tăng mức độ chi tiếtargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
32Lưu ý, mặc định sẽ là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
22 trừ khi được đặt rõ ràng thành 0parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
17 - Thao tác này sẽ in thông báo trợ giúp đầy đủ cho tất cả các tùy chọn trong trình phân tích cú pháp hiện tại rồi thoát. Theo mặc định, một hành động trợ giúp sẽ tự động được thêm vào trình phân tích cú pháp. Xem để biết chi tiết về cách tạo đầu raparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
18 - Điều này mong đợi một đối số từ khóaargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
85 trong cuộc gọi và in thông tin phiên bản và thoát khi được gọiargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
33args = parser.parse_args[] print[args.filename, args.count, args.verbose]
87 - Điều này lưu trữ một danh sách và mở rộng từng giá trị đối số vào danh sách. Ví dụ sử dụngargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
34Mới trong phiên bản 3. 8
Bạn cũng có thể chỉ định một hành động tùy ý bằng cách chuyển một lớp con Hành động hoặc đối tượng khác thực hiện cùng một giao diện.
args = parser.parse_args[] print[args.filename, args.count, args.verbose]88 có sẵn trong
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag01 và thêm hỗ trợ cho các hành động boolean như
args = parser.parse_args[] print[args.filename, args.count, args.verbose]36 và
args = parser.parse_args[] print[args.filename, args.count, args.verbose]91
args = parser.parse_args[] print[args.filename, args.count, args.verbose]35
Mới trong phiên bản 3. 9
Cách khuyến nghị để tạo hành động tùy chỉnh là mở rộng , ghi đè phương thức
args = parser.parse_args[] print[args.filename, args.count, args.verbose]93 và tùy chọn phương thức
args = parser.parse_args[] print[args.filename, args.count, args.verbose]94 và
args = parser.parse_args[] print[args.filename, args.count, args.verbose]95
Ví dụ về hành động tùy chỉnh
args = parser.parse_args[] print[args.filename, args.count, args.verbose]36
Để biết thêm chi tiết, xem
cằn nhằn
Các đối tượng ArgumentParser thường liên kết một đối số dòng lệnh với một hành động được thực hiện. Đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]97 liên kết một số đối số dòng lệnh khác với một hành động. Các giá trị được hỗ trợ là
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
98 [một số nguyên].args = parser.parse_args[] print[args.filename, args.count, args.verbose]
98 đối số từ dòng lệnh sẽ được tập hợp lại thành một danh sách. Ví dụargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
37Lưu ý rằng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
100 tạo danh sách một mục. Điều này khác với mặc định, trong đó mặt hàng được sản xuất bởi chính nó
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
24. Một đối số sẽ được sử dụng từ dòng lệnh nếu có thể và được tạo dưới dạng một mục. Nếu không có đối số dòng lệnh, giá trị từ sẽ được tạo. Lưu ý rằng đối với các đối số tùy chọn, có một trường hợp bổ sung - có chuỗi tùy chọn nhưng không có đối số dòng lệnh theo sau. Trong trường hợp này, giá trị từ sẽ được tạo ra. Một số ví dụ để minh họa điều nàyargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
38Một trong những cách sử dụng phổ biến hơn của
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
102 là cho phép các tệp đầu vào và đầu ra tùy chọnargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
39
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
25. Tất cả các đối số dòng lệnh hiện tại được tập hợp thành một danh sách. Lưu ý rằng việc có nhiều hơn một đối số vị trí vớiargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
104 thường không có ý nghĩa gì, nhưng có thể có nhiều đối số tùy chọn vớiargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
104. Ví dụargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
40
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
26. Cũng giống nhưparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
25, tất cả các đối số dòng lệnh được tập hợp thành một danh sách. Ngoài ra, một thông báo lỗi sẽ được tạo nếu không có ít nhất một đối số dòng lệnh. Ví dụargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
41
Nếu đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]97 không được cung cấp, số lượng đối số được sử dụng được xác định bởi. Nói chung, điều này có nghĩa là một đối số dòng lệnh sẽ được sử dụng và một mục duy nhất [không phải danh sách] sẽ được tạo
hăng sô
Đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]109 của được sử dụng để giữ các giá trị không đổi không được đọc từ dòng lệnh nhưng được yêu cầu cho các hành động khác nhau. Hai cách sử dụng phổ biến nhất của nó là
Khi được gọi với
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
113 hoặcargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
114. Những hành động này thêm giá trịargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
109 vào một trong các thuộc tính của đối tượng được trả về bởi. Xem mô tả cho các ví dụ. Nếuargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
109 không được cung cấp cho , nó sẽ nhận giá trị mặc định làparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
22When được gọi với các chuỗi tùy chọn [như
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
35 hoặcargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
36] vàargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
102. Điều này tạo ra một đối số tùy chọn có thể được theo sau bởi 0 hoặc một đối số dòng lệnh. Khi phân tích cú pháp dòng lệnh, nếu gặp phải chuỗi tùy chọn mà không có đối số dòng lệnh nào theo sau nó, giá trị củaargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
109 sẽ được giả định làparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
22 thay thế. Xem mô tả cho các ví dụ
Đã thay đổi trong phiên bản 3. 11. ______2126 theo mặc định, kể cả khi
args = parser.parse_args[] print[args.filename, args.count, args.verbose]114 hoặc
args = parser.parse_args[] print[args.filename, args.count, args.verbose]113.
mặc định
Tất cả các đối số tùy chọn và một số đối số vị trí có thể được bỏ qua tại dòng lệnh. Đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]129 của , có giá trị mặc định là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag22, chỉ định giá trị nào sẽ được sử dụng nếu không có đối số dòng lệnh. Đối với các đối số tùy chọn, giá trị
args = parser.parse_args[] print[args.filename, args.count, args.verbose]129 được sử dụng khi chuỗi tùy chọn không có ở dòng lệnh
args = parser.parse_args[] print[args.filename, args.count, args.verbose]42
Nếu không gian tên đích đã có một bộ thuộc tính, hành động mặc định sẽ không ghi đè lên nó
args = parser.parse_args[] print[args.filename, args.count, args.verbose]43
Nếu giá trị
args = parser.parse_args[] print[args.filename, args.count, args.verbose]129 là một chuỗi, trình phân tích cú pháp sẽ phân tích cú pháp giá trị đó như thể đó là một đối số dòng lệnh. Cụ thể, trình phân tích cú pháp áp dụng bất kỳ đối số chuyển đổi nào, nếu được cung cấp, trước khi đặt thuộc tính trên giá trị trả về. Mặt khác, trình phân tích cú pháp sử dụng giá trị như là
args = parser.parse_args[] print[args.filename, args.count, args.verbose]44
Đối với các đối số vị trí bằng với
args = parser.parse_args[] print[args.filename, args.count, args.verbose]135 hoặc
args = parser.parse_args[] print[args.filename, args.count, args.verbose]136, giá trị
args = parser.parse_args[] print[args.filename, args.count, args.verbose]129 được sử dụng khi không có đối số dòng lệnh nào
args = parser.parse_args[] print[args.filename, args.count, args.verbose]45
Việc cung cấp
args = parser.parse_args[] print[args.filename, args.count, args.verbose]138 khiến không có thuộc tính nào được thêm vào nếu không có đối số dòng lệnh
args = parser.parse_args[] print[args.filename, args.count, args.verbose]46
loại
Theo mặc định, trình phân tích cú pháp đọc các đối số dòng lệnh dưới dạng các chuỗi đơn giản. Tuy nhiên, khá thường xuyên, chuỗi dòng lệnh thay vào đó nên được hiểu là một loại khác, chẳng hạn như a hoặc. Từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]141 cho phép thực hiện mọi chuyển đổi loại và kiểm tra loại cần thiết
Nếu từ khóa được sử dụng với từ khóa, bộ chuyển đổi kiểu chỉ được áp dụng nếu mặc định là một chuỗi
Đối số của
args = parser.parse_args[] print[args.filename, args.count, args.verbose]141 có thể là bất kỳ lệnh gọi nào chấp nhận một chuỗi đơn. Nếu hàm tăng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]144, , hoặc , ngoại lệ sẽ bị bắt và thông báo lỗi được định dạng đẹp sẽ hiển thị. Không có loại ngoại lệ nào khác được xử lý
Các loại và chức năng tích hợp phổ biến có thể được sử dụng làm bộ chuyển đổi loại
args = parser.parse_args[] print[args.filename, args.count, args.verbose]47
Các chức năng do người dùng xác định cũng có thể được sử dụng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]48
Hàm này không được khuyến nghị làm công cụ chuyển đổi loại. Tất cả những gì nó làm là chuyển đổi các chuỗi rỗng thành
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag29 và các chuỗi không rỗng thành
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag28. Đây thường không phải là những gì được mong muốn
Nói chung, từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]141 là một tiện ích chỉ nên được sử dụng cho các chuyển đổi đơn giản chỉ có thể gây ra một trong ba trường hợp ngoại lệ được hỗ trợ. Bất cứ điều gì có xử lý lỗi hoặc quản lý tài nguyên thú vị hơn nên được thực hiện sau khi các đối số được phân tích cú pháp
Ví dụ: chuyển đổi JSON hoặc YAML có các trường hợp lỗi phức tạp yêu cầu báo cáo tốt hơn mức có thể được cung cấp bởi từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]141. A sẽ không được định dạng tốt và một ngoại lệ
args = parser.parse_args[] print[args.filename, args.count, args.verbose]153 hoàn toàn không được xử lý
Thậm chí có những hạn chế khi sử dụng với từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]141. Nếu một đối số sử dụng FileType và sau đó đối số tiếp theo không thành công, lỗi sẽ được báo cáo nhưng tệp không tự động đóng. Trong trường hợp này, tốt hơn là đợi cho đến khi trình phân tích cú pháp chạy xong rồi sử dụng câu lệnh - để quản lý các tệp
Đối với trình kiểm tra loại chỉ kiểm tra đối với một bộ giá trị cố định, hãy cân nhắc sử dụng từ khóa thay thế
lựa chọn
Một số đối số dòng lệnh nên được chọn từ một bộ giá trị bị hạn chế. Chúng có thể được xử lý bằng cách chuyển một đối tượng vùng chứa làm đối số từ khóa lựa chọn tới. Khi dòng lệnh được phân tích cú pháp, các giá trị đối số sẽ được kiểm tra và thông báo lỗi sẽ hiển thị nếu đối số không phải là một trong các giá trị được chấp nhận
args = parser.parse_args[] print[args.filename, args.count, args.verbose]49
Lưu ý rằng việc đưa vào vùng chứa lựa chọn được kiểm tra sau khi thực hiện bất kỳ chuyển đổi nào, do đó, loại đối tượng trong vùng chứa lựa chọn phải khớp với loại đã chỉ định
args = parser.parse_args[] print[args.filename, args.count, args.verbose]50
Bất kỳ vùng chứa nào cũng có thể được chuyển thành giá trị lựa chọn, do đó, các đối tượng, đối tượng và vùng chứa tùy chỉnh đều được hỗ trợ
Việc sử dụng không được khuyến nghị vì khó kiểm soát sự xuất hiện của nó trong cách sử dụng, trợ giúp và thông báo lỗi
Các lựa chọn được định dạng sẽ ghi đè metavar mặc định thường được lấy từ dest. Đây thường là những gì bạn muốn vì người dùng không bao giờ nhìn thấy tham số đích. Nếu màn hình này không được mong muốn [có lẽ vì có nhiều lựa chọn], chỉ cần chỉ định rõ ràng
cần thiết
Nói chung, mô-đun giả định rằng các cờ như
args = parser.parse_args[] print[args.filename, args.count, args.verbose]35 và
args = parser.parse_args[] print[args.filename, args.count, args.verbose]163 biểu thị các đối số tùy chọn, luôn có thể được bỏ qua tại dòng lệnh. Để thực hiện một tùy chọn bắt buộc, có thể chỉ định
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag28 cho đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]165 thành
args = parser.parse_args[] print[args.filename, args.count, args.verbose]51
Như ví dụ cho thấy, nếu một tùy chọn được đánh dấu là
args = parser.parse_args[] print[args.filename, args.count, args.verbose]167, sẽ báo lỗi nếu tùy chọn đó không có ở dòng lệnh
Ghi chú
Các tùy chọn bắt buộc thường được coi là hình thức xấu vì người dùng mong đợi các tùy chọn là tùy chọn và do đó nên tránh chúng khi có thể
Cứu giúp
Giá trị
args = parser.parse_args[] print[args.filename, args.count, args.verbose]169 là một chuỗi chứa mô tả ngắn gọn về đối số. Khi người dùng yêu cầu trợ giúp [thường bằng cách sử dụng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]38 hoặc
args = parser.parse_args[] print[args.filename, args.count, args.verbose]39 tại dòng lệnh], các mô tả
args = parser.parse_args[] print[args.filename, args.count, args.verbose]169 này sẽ được hiển thị cùng với mỗi đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]52
Các chuỗi
args = parser.parse_args[] print[args.filename, args.count, args.verbose]169 có thể bao gồm nhiều định dạng định dạng khác nhau để tránh lặp lại những thứ như tên chương trình hoặc đối số. Các chỉ định có sẵn bao gồm tên chương trình,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag74 và hầu hết các đối số từ khóa cho , e. g.
args = parser.parse_args[] print[args.filename, args.count, args.verbose]176,
args = parser.parse_args[] print[args.filename, args.count, args.verbose]177, v.v.
args = parser.parse_args[] print[args.filename, args.count, args.verbose]53
Vì chuỗi trợ giúp hỗ trợ định dạng %, nếu bạn muốn một chữ
args = parser.parse_args[] print[args.filename, args.count, args.verbose]178 xuất hiện trong chuỗi trợ giúp, bạn phải thoát khỏi nó dưới dạng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]179
hỗ trợ tắt tiếng mục trợ giúp cho một số tùy chọn nhất định, bằng cách đặt giá trị
args = parser.parse_args[] print[args.filename, args.count, args.verbose]169 thành
args = parser.parse_args[] print[args.filename, args.count, args.verbose]182
args = parser.parse_args[] print[args.filename, args.count, args.verbose]54
metavar
Khi tạo thông báo trợ giúp, nó cần một số cách để tham chiếu đến từng đối số dự kiến. Theo mặc định, các đối tượng ArgumentParser sử dụng giá trị làm “tên” của từng đối tượng. Theo mặc định, đối với các hành động đối số vị trí, giá trị được sử dụng trực tiếp và đối với các hành động đối số tùy chọn, giá trị được viết hoa. Vì vậy, một đối số vị trí duy nhất với
args = parser.parse_args[] print[args.filename, args.count, args.verbose]184 sẽ được gọi là
args = parser.parse_args[] print[args.filename, args.count, args.verbose]185. Một đối số tùy chọn duy nhất
args = parser.parse_args[] print[args.filename, args.count, args.verbose]36 phải được theo sau bởi một đối số dòng lệnh duy nhất sẽ được gọi là
args = parser.parse_args[] print[args.filename, args.count, args.verbose]187. Một ví dụ
args = parser.parse_args[] print[args.filename, args.count, args.verbose]55
Một tên thay thế có thể được chỉ định với
args = parser.parse_args[] print[args.filename, args.count, args.verbose]188
args = parser.parse_args[] print[args.filename, args.count, args.verbose]56
Lưu ý rằng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]188 chỉ thay đổi tên hiển thị - tên của thuộc tính trên đối tượng vẫn được xác định bởi giá trị
Các giá trị khác nhau của
args = parser.parse_args[] print[args.filename, args.count, args.verbose]97 có thể khiến metavar được sử dụng nhiều lần. Cung cấp một bộ cho
args = parser.parse_args[] print[args.filename, args.count, args.verbose]188 chỉ định một cách hiển thị khác cho mỗi đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]57
định mệnh
Hầu hết các hành động thêm một số giá trị như một thuộc tính của đối tượng được trả về bởi. Tên của thuộc tính này được xác định bởi đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]195 của. Đối với các hành động đối số vị trí,
args = parser.parse_args[] print[args.filename, args.count, args.verbose]195 thường được cung cấp làm đối số đầu tiên cho
args = parser.parse_args[] print[args.filename, args.count, args.verbose]58
Đối với các hành động đối số tùy chọn, giá trị của
args = parser.parse_args[] print[args.filename, args.count, args.verbose]195 thường được suy ra từ các chuỗi tùy chọn. tạo ra giá trị của
args = parser.parse_args[] print[args.filename, args.count, args.verbose]195 bằng cách lấy chuỗi tùy chọn dài đầu tiên và loại bỏ chuỗi
args = parser.parse_args[] print[args.filename, args.count, args.verbose]302 ban đầu. Nếu không có chuỗi tùy chọn dài nào được cung cấp, thì
args = parser.parse_args[] print[args.filename, args.count, args.verbose]195 sẽ được lấy từ chuỗi tùy chọn ngắn đầu tiên bằng cách loại bỏ ký tự
args = parser.parse_args[] print[args.filename, args.count, args.verbose]02 đầu tiên. Mọi ký tự
args = parser.parse_args[] print[args.filename, args.count, args.verbose]02 bên trong sẽ được chuyển đổi thành ký tự
args = parser.parse_args[] print[args.filename, args.count, args.verbose]306 để đảm bảo chuỗi là tên thuộc tính hợp lệ. Các ví dụ dưới đây minh họa hành vi này
args = parser.parse_args[] print[args.filename, args.count, args.verbose]59
args = parser.parse_args[] print[args.filename, args.count, args.verbose]195 cho phép cung cấp tên thuộc tính tùy chỉnh
args = parser.parse_args[] print[args.filename, args.count, args.verbose]60
các lớp hành động
Các lớp hành động triển khai API hành động, một hàm có thể gọi được trả về một hàm có thể gọi được để xử lý các đối số từ dòng lệnh. Bất kỳ đối tượng nào tuân theo API này đều có thể được chuyển dưới dạng tham số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]64 thành
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag38lớp argparse. Hành động[option_strings , dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None]
Các đối tượng hành động được ArgumentParser sử dụng để biểu thị thông tin cần thiết để phân tích cú pháp một đối số từ một hoặc nhiều chuỗi từ dòng lệnh. Lớp Hành động phải chấp nhận hai đối số vị trí cộng với bất kỳ đối số từ khóa nào được chuyển đến ngoại trừ chính
args = parser.parse_args[] print[args.filename, args.count, args.verbose]64
Các phiên bản của Hành động [hoặc giá trị trả về của bất kỳ giá trị nào có thể gọi được đối với tham số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]64] phải có các thuộc tính “dest”, “option_strings”, “default”, “type”, “required”, “help”, v.v. xác định. Cách dễ nhất để đảm bảo các thuộc tính này được xác định là gọi _____2313
Các trường hợp hành động phải có thể gọi được, vì vậy các lớp con phải ghi đè phương thức
args = parser.parse_args[] print[args.filename, args.count, args.verbose]93, phương thức này sẽ chấp nhận bốn tham số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
315 - Đối tượng ArgumentParser chứa hành động nàyargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
316 - Đối tượng sẽ được trả về bởi. Hầu hết các hành động thêm thuộc tính vào đối tượng này bằng cách sử dụngargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
320 - Các đối số dòng lệnh được liên kết, với bất kỳ loại chuyển đổi nào được áp dụng. Chuyển đổi loại được chỉ định với đối số từ khóa thànhargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
322 - Chuỗi tùy chọn được sử dụng để gọi hành động này. Đối sốargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
322 là tùy chọn và sẽ vắng mặt nếu hành động được liên kết với đối số vị trí
Phương thức
args = parser.parse_args[] print[args.filename, args.count, args.verbose]93 có thể thực hiện các hành động tùy ý, nhưng thường sẽ đặt các thuộc tính trên
args = parser.parse_args[] print[args.filename, args.count, args.verbose]316 dựa trên
args = parser.parse_args[] print[args.filename, args.count, args.verbose]195 và
args = parser.parse_args[] print[args.filename, args.count, args.verbose]320
Các lớp con hành động có thể định nghĩa một phương thức
args = parser.parse_args[] print[args.filename, args.count, args.verbose]95 không có đối số và trả về một chuỗi sẽ được sử dụng khi in cách sử dụng chương trình. Nếu phương pháp đó không được cung cấp, một giá trị mặc định hợp lý sẽ được sử dụng
Phương thức parse_args[]
Trình phân tích đối số. parse_args[args=Không có, namespace=None]Chuyển đổi chuỗi đối số thành đối tượng và gán chúng làm thuộc tính của không gian tên. Trả lại không gian tên đã điền
Các cuộc gọi trước để xác định chính xác đối tượng nào được tạo và cách chúng được chỉ định. Xem tài liệu để biết chi tiết
- Danh sách các chuỗi để phân tích cú pháp. Mặc định được lấy từ
- Một đối tượng để lấy các thuộc tính. Mặc định là một đối tượng trống mới
Cú pháp giá trị tùy chọn
Phương thức này hỗ trợ một số cách chỉ định giá trị của một tùy chọn [nếu cần một tùy chọn]. Trong trường hợp đơn giản nhất, tùy chọn và giá trị của nó được truyền dưới dạng hai đối số riêng biệt
args = parser.parse_args[] print[args.filename, args.count, args.verbose]61
Đối với các tùy chọn dài [các tùy chọn có tên dài hơn một ký tự], tùy chọn và giá trị cũng có thể được chuyển dưới dạng một đối số dòng lệnh, sử dụng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]334 để phân tách chúng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]62
Đối với các tùy chọn ngắn [các tùy chọn chỉ dài một ký tự], tùy chọn và giá trị của nó có thể được nối với nhau
args = parser.parse_args[] print[args.filename, args.count, args.verbose]63
Một số tùy chọn ngắn có thể được nối với nhau, chỉ sử dụng một tiền tố
args = parser.parse_args[] print[args.filename, args.count, args.verbose]02 duy nhất, miễn là chỉ tùy chọn cuối cùng [hoặc không có tùy chọn nào] yêu cầu giá trị
args = parser.parse_args[] print[args.filename, args.count, args.verbose]64
Đối số không hợp lệ
Trong khi phân tích cú pháp dòng lệnh, kiểm tra nhiều lỗi khác nhau, bao gồm tùy chọn không rõ ràng, loại không hợp lệ, tùy chọn không hợp lệ, sai số lượng đối số vị trí, v.v. Khi gặp lỗi như vậy, nó sẽ thoát và in lỗi cùng với thông báo sử dụng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]65
Đối số có chứa args = parser.parse_args[]
print[args.filename, args.count, args.verbose]
02
Phương pháp này cố gắng đưa ra lỗi bất cứ khi nào người dùng mắc lỗi rõ ràng, nhưng một số tình huống vốn đã mơ hồ. Ví dụ: đối số dòng lệnh
args = parser.parse_args[] print[args.filename, args.count, args.verbose]339 có thể là một nỗ lực để chỉ định một tùy chọn hoặc một nỗ lực để cung cấp một đối số vị trí. Phương pháp thận trọng ở đây. đối số vị trí chỉ có thể bắt đầu bằng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]02 nếu chúng trông giống số âm và không có tùy chọn nào trong trình phân tích cú pháp trông giống số âm
args = parser.parse_args[] print[args.filename, args.count, args.verbose]66
Nếu bạn có đối số vị trí phải bắt đầu bằng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]02 và không giống số âm, bạn có thể chèn đối số giả
args = parser.parse_args[] print[args.filename, args.count, args.verbose]343 cho biết mọi thứ sau đó là đối số vị trí
args = parser.parse_args[] print[args.filename, args.count, args.verbose]67
Viết tắt đối số [khớp tiền tố]
Phương pháp này cho phép các tùy chọn dài được viết tắt thành tiền tố, nếu từ viết tắt rõ ràng [tiền tố khớp với một tùy chọn duy nhất]
args = parser.parse_args[] print[args.filename, args.count, args.verbose]68
Một lỗi được tạo ra cho các đối số có thể tạo ra nhiều tùy chọn. Có thể tắt tính năng này bằng cách cài đặt thành
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag29
Ngoài parser.add_argument['filename'] # positional argument
parser.add_argument['-c', '--count'] # option that takes a value
parser.add_argument['-v', '--verbose',
action='store_true'] # on/off flag
04
Đôi khi, có thể hữu ích khi có các đối số phân tích cú pháp ArgumentParser khác với các đối số của. Điều này có thể được thực hiện bằng cách chuyển một danh sách các chuỗi tới. Điều này hữu ích để thử nghiệm tại dấu nhắc tương tác
args = parser.parse_args[] print[args.filename, args.count, args.verbose]69
Đối tượng không gian tên
lớp argparse. Không gian tênLớp đơn giản được sử dụng theo mặc định để tạo một đối tượng chứa các thuộc tính và trả về nó
Lớp này đơn giản một cách có chủ ý, chỉ là một lớp con với biểu diễn chuỗi có thể đọc được. Nếu bạn muốn có chế độ xem giống như chính tả của các thuộc tính, bạn có thể sử dụng thành ngữ Python tiêu chuẩn,
args = parser.parse_args[] print[args.filename, args.count, args.verbose]70
Cũng có thể hữu ích khi gán các thuộc tính cho một đối tượng đã tồn tại, thay vì một đối tượng mới. Điều này có thể đạt được bằng cách chỉ định đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]355
args = parser.parse_args[] print[args.filename, args.count, args.verbose]71
Tiện ích khác
lệnh phụ
Trình phân tích đối số. add_subparsers[[title][, description][, prog][, parser_class][, action][, option_strings][, dest][, required][, help][, metavar]]Nhiều chương trình chia chức năng của chúng thành một số lệnh con, ví dụ, chương trình
args = parser.parse_args[] print[args.filename, args.count, args.verbose]356 có thể gọi các lệnh con như
args = parser.parse_args[] print[args.filename, args.count, args.verbose]357,
args = parser.parse_args[] print[args.filename, args.count, args.verbose]358 và
args = parser.parse_args[] print[args.filename, args.count, args.verbose]359. Tách chức năng theo cách này có thể là một ý tưởng đặc biệt hay khi một chương trình thực hiện một số chức năng khác nhau yêu cầu các loại đối số dòng lệnh khác nhau. hỗ trợ việc tạo các lệnh con như vậy với phương thức. Phương thức này thường được gọi không có đối số và trả về một đối tượng hành động đặc biệt. Đối tượng này có một phương thức duy nhất,
args = parser.parse_args[] print[args.filename, args.count, args.verbose]363, lấy tên lệnh và bất kỳ đối số hàm tạo nào, đồng thời trả về một đối tượng có thể sửa đổi như bình thường
Mô tả các thông số
tiêu đề - tiêu đề cho nhóm trình phân tích cú pháp phụ trong đầu ra trợ giúp;
mô tả - mô tả cho nhóm trình phân tích cú pháp phụ trong đầu ra trợ giúp, theo mặc định là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
22prog - thông tin sử dụng sẽ được hiển thị với trợ giúp của lệnh phụ, theo mặc định, tên của chương trình và bất kỳ đối số vị trí nào trước đối số trình phân tích cú pháp phụ
parser_class - lớp sẽ được sử dụng để tạo các thể hiện của trình phân tích cú pháp phụ, theo mặc định là lớp của trình phân tích cú pháp hiện tại [e. g. ArgumentParser]
- loại hành động cơ bản được thực hiện khi gặp phải đối số này tại dòng lệnh
- tên của thuộc tính mà tên lệnh phụ sẽ được lưu trữ;
- Có hay không phải cung cấp lệnh con, mặc định là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
29 [thêm vào 3. 7]- trợ giúp cho nhóm trình phân tích cú pháp phụ trong đầu ra trợ giúp, theo mặc định là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
22- chuỗi trình bày các lệnh phụ có sẵn trong trợ giúp; . }
Một số ví dụ sử dụng
args = parser.parse_args[] print[args.filename, args.count, args.verbose]72
Lưu ý rằng đối tượng được trả về bởi sẽ chỉ chứa các thuộc tính cho trình phân tích cú pháp chính và trình phân tích cú pháp con đã được chọn bởi dòng lệnh [chứ không phải bất kỳ trình phân tích cú pháp con nào khác]. Vì vậy, trong ví dụ trên, khi lệnh
args = parser.parse_args[] print[args.filename, args.count, args.verbose]372 được chỉ định, chỉ có các thuộc tính
args = parser.parse_args[] print[args.filename, args.count, args.verbose]53 và
args = parser.parse_args[] print[args.filename, args.count, args.verbose]185 và khi lệnh
args = parser.parse_args[] print[args.filename, args.count, args.verbose]375 được chỉ định, chỉ có các thuộc tính
args = parser.parse_args[] print[args.filename, args.count, args.verbose]53 và
args = parser.parse_args[] print[args.filename, args.count, args.verbose]377
Tương tự, khi một thông báo trợ giúp được yêu cầu từ một bộ phân tích cú pháp con, chỉ phần trợ giúp cho bộ phân tích cú pháp cụ thể đó sẽ được in ra. Thông báo trợ giúp sẽ không bao gồm thông báo trình phân tích cú pháp cha hoặc trình phân tích cú pháp anh chị em. [Tuy nhiên, một thông báo trợ giúp cho mỗi lệnh subparser có thể được cung cấp bằng cách cung cấp đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]378 cho
args = parser.parse_args[] print[args.filename, args.count, args.verbose]363 như trên. ]
args = parser.parse_args[] print[args.filename, args.count, args.verbose]73
Phương pháp này cũng hỗ trợ các đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]381 và
args = parser.parse_args[] print[args.filename, args.count, args.verbose]382. Khi có một trong hai, các lệnh của trình phân tích cú pháp con sẽ xuất hiện trong nhóm riêng của chúng trong đầu ra trợ giúp. Ví dụ
args = parser.parse_args[] print[args.filename, args.count, args.verbose]74
Hơn nữa,
args = parser.parse_args[] print[args.filename, args.count, args.verbose]383 hỗ trợ một đối số
args = parser.parse_args[] print[args.filename, args.count, args.verbose]384 bổ sung, cho phép nhiều chuỗi tham chiếu đến cùng một trình phân tích con. Ví dụ này, chẳng hạn như
args = parser.parse_args[] print[args.filename, args.count, args.verbose]356, bí danh
args = parser.parse_args[] print[args.filename, args.count, args.verbose]386 là cách viết tắt của
args = parser.parse_args[] print[args.filename, args.count, args.verbose]387
args = parser.parse_args[] print[args.filename, args.count, args.verbose]75
Một cách đặc biệt hiệu quả để xử lý các lệnh phụ là kết hợp việc sử dụng phương thức với các lệnh gọi để mỗi trình phân tích cú pháp con biết hàm Python nào sẽ thực thi. Ví dụ
args = parser.parse_args[] print[args.filename, args.count, args.verbose]76
Bằng cách này, bạn có thể thực hiện công việc gọi hàm thích hợp sau khi quá trình phân tích cú pháp đối số hoàn tất. Liên kết các chức năng với các hành động như thế này thường là cách dễ dàng nhất để xử lý các hành động khác nhau cho mỗi trình phân tích cú pháp con của bạn. Tuy nhiên, nếu cần kiểm tra tên của trình phân tích con đã được gọi, đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]195 cho cuộc gọi sẽ hoạt động
args = parser.parse_args[] print[args.filename, args.count, args.verbose]77
Đã thay đổi trong phiên bản 3. 7. Đối số từ khóa bắt buộc mới.
đối tượng FileType
lớp argparse. Loại tệp[chế độ=', bufsize=- 1, encoding=None, errors=None]Nhà máy tạo các đối tượng có thể được chuyển đến đối số kiểu của. Các đối số có đối tượng là loại của chúng sẽ mở các đối số dòng lệnh dưới dạng tệp với các chế độ, kích thước bộ đệm, mã hóa và xử lý lỗi được yêu cầu [xem hàm để biết thêm chi tiết]
args = parser.parse_args[] print[args.filename, args.count, args.verbose]78
Các đối tượng FileType hiểu đối số giả
args = parser.parse_args[] print[args.filename, args.count, args.verbose]08 và tự động chuyển đổi đối số này thành các đối tượng có thể đọc được và cho các đối tượng có thể ghi
args = parser.parse_args[] print[args.filename, args.count, args.verbose]79
Mới trong phiên bản 3. 4. Các đối số từ khóa mã hóa và lỗi.
Nhóm đối số
Trình phân tích đối số. add_argument_group[title=Không có, description=None]Theo mặc định, nhóm các đối số dòng lệnh thành “đối số vị trí” và “tùy chọn” khi hiển thị thông báo trợ giúp. Khi có một nhóm các đối số theo khái niệm tốt hơn so với nhóm mặc định này, các nhóm thích hợp có thể được tạo bằng phương thức
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag30
Phương thức trả về một đối tượng nhóm đối số có một phương thức giống như một đối tượng thông thường. Khi một đối số được thêm vào nhóm, trình phân tích cú pháp xử lý đối số đó giống như một đối số bình thường, nhưng hiển thị đối số trong một nhóm riêng cho các thông báo trợ giúp. Phương thức chấp nhận các đối số tiêu đề và mô tả có thể được sử dụng để tùy chỉnh màn hình này
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag31
Lưu ý rằng mọi đối số không nằm trong nhóm do người dùng xác định của bạn sẽ kết thúc trở lại trong phần "đối số vị trí" và "đối số tùy chọn" thông thường
Đã thay đổi trong phiên bản 3. 11. Việc gọi một nhóm đối số không được dùng nữa. Tính năng này không bao giờ được hỗ trợ và không phải lúc nào cũng hoạt động chính xác. Chức năng tồn tại trên API một cách tình cờ thông qua kế thừa và sẽ bị xóa trong tương lai.
Loại trừ lẫn nhau
Trình phân tích đối số. add_mutually_exclusive_group[bắt buộc=Sai]Tạo một nhóm loại trừ lẫn nhau. sẽ đảm bảo rằng chỉ một trong các đối số trong nhóm loại trừ lẫn nhau xuất hiện trên dòng lệnh
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag32
Phương thức này cũng chấp nhận một đối số bắt buộc, để chỉ ra rằng ít nhất một trong các đối số loại trừ lẫn nhau là bắt buộc
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag33
Lưu ý rằng các nhóm đối số loại trừ lẫn nhau hiện tại không hỗ trợ đối số tiêu đề và mô tả của
Đã thay đổi trong phiên bản 3. 11. Gọi hoặc trên một nhóm loại trừ lẫn nhau không được chấp nhận. Các tính năng này không bao giờ được hỗ trợ và không phải lúc nào cũng hoạt động chính xác. Các chức năng tồn tại trên API một cách tình cờ thông qua kế thừa và sẽ bị xóa trong tương lai.
Mặc định của trình phân tích cú pháp
Trình phân tích đối số. set_defaults[**kwargs]Hầu hết thời gian, các thuộc tính của đối tượng được trả về bởi sẽ được xác định đầy đủ bằng cách kiểm tra các đối số dòng lệnh và các hành động đối số. cho phép thêm một số thuộc tính bổ sung được xác định mà không cần kiểm tra dòng lệnh
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag34
Lưu ý rằng các giá trị mặc định ở cấp độ trình phân tích cú pháp luôn ghi đè các giá trị mặc định ở cấp độ đối số
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag35
Giá trị mặc định ở cấp độ trình phân tích cú pháp có thể đặc biệt hữu ích khi làm việc với nhiều trình phân tích cú pháp. Xem phương pháp để biết ví dụ về loại này
Trình phân tích đối số. get_default[dest]Nhận giá trị mặc định cho một thuộc tính không gian tên, được đặt bởi một trong hai hoặc bởi
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag36
Trợ giúp in ấn
Trong hầu hết các ứng dụng điển hình, sẽ đảm nhận việc định dạng và in bất kỳ thông báo lỗi hoặc sử dụng nào. Tuy nhiên, một số phương pháp định dạng có sẵn
Trình phân tích đối số. print_usage[tệp=Không]In một mô tả ngắn gọn về cách thức nên được gọi trên dòng lệnh. Nếu tệp là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag22, được giả địnhTrình phân tích đối số. print_help[tệp=Không có]
In thông báo trợ giúp, bao gồm cách sử dụng chương trình và thông tin về các đối số đã đăng ký với. Nếu tệp là
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag22, được giả định
Ngoài ra còn có các biến thể của các phương thức này chỉ trả về một chuỗi thay vì in nó
Trình phân tích đối số. format_usage[]Trả về một chuỗi chứa một mô tả ngắn gọn về cách gọi nên được gọi trên dòng lệnh
Trình phân tích đối số. format_help[]Trả về một chuỗi chứa thông báo trợ giúp, bao gồm cách sử dụng chương trình và thông tin về các đối số đã đăng ký với
phân tích cú pháp một phần
Trình phân tích đối số. parse_known_args[args=Không có, namespace=None]Đôi khi, một tập lệnh chỉ có thể phân tích cú pháp một vài đối số dòng lệnh, chuyển các đối số còn lại sang một tập lệnh hoặc chương trình khác. Trong những trường hợp này, phương pháp này có thể hữu ích. Nó hoạt động giống như vậy ngoại trừ việc nó không tạo ra lỗi khi có thêm đối số. Thay vào đó, nó trả về một bộ hai mục chứa không gian tên được điền và danh sách các chuỗi đối số còn lại
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag37
Cảnh báo
quy tắc áp dụng cho
args = parser.parse_args[] print[args.filename, args.count, args.verbose]428. Trình phân tích cú pháp có thể sử dụng một tùy chọn ngay cả khi đó chỉ là tiền tố của một trong các tùy chọn đã biết, thay vì để nó trong danh sách đối số còn lại
Tùy chỉnh phân tích tệp
Trình phân tích đối số. convert_arg_line_to_args[arg_line]Các đối số được đọc từ một tệp [xem đối số từ khóa fromfile_prefix_chars cho hàm tạo] được đọc một đối số trên mỗi dòng. có thể được ghi đè để đọc fancier
Phương thức này nhận một đối số duy nhất arg_line là một chuỗi được đọc từ tệp đối số. Nó trả về một danh sách các đối số được phân tích cú pháp từ chuỗi này. Phương thức được gọi một lần trên mỗi dòng được đọc từ tệp đối số, theo thứ tự
Ghi đè hữu ích của phương thức này là ghi đè coi từng từ được phân tách bằng dấu cách làm đối số. Ví dụ sau minh họa cách thực hiện việc này
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag38
phương thức thoát
Trình phân tích đối số. thoát[trạng thái=0, message=None]Phương thức này kết thúc chương trình, thoát với trạng thái đã chỉ định và nếu được cung cấp, nó sẽ in một thông báo trước đó. Người dùng có thể ghi đè phương thức này để xử lý các bước này theo cách khác
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag39Trình phân tích đối số. lỗi[thông báo]
Phương pháp này in một thông báo sử dụng bao gồm thông báo lỗi tiêu chuẩn và kết thúc chương trình với mã trạng thái là 2
phân tích cú pháp xen kẽ
Trình phân tích đối số. parse_intermixed_args[args=Không có . , namespace=None]ArgumentParser.parse_known_intermixed_args[args=Không có, namespace=None]Một số lệnh Unix cho phép người dùng kết hợp các đối số tùy chọn với các đối số vị trí. Các phương thức và hỗ trợ kiểu phân tích cú pháp này
Các trình phân tích cú pháp này không hỗ trợ tất cả các tính năng argparse và sẽ đưa ra các ngoại lệ nếu các tính năng không được hỗ trợ được sử dụng. Cụ thể, các bộ phân tích con,
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag27 và các nhóm loại trừ lẫn nhau bao gồm cả tùy chọn và vị trí không được hỗ trợ
Ví dụ sau đây cho thấy sự khác biệt giữa và. cái trước trả về
args = parser.parse_args[] print[args.filename, args.count, args.verbose]438 dưới dạng đối số chưa được phân tích cú pháp, trong khi cái sau thu thập tất cả các vị trí vào
args = parser.parse_args[] print[args.filename, args.count, args.verbose]439
parser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag00
trả về một bộ hai mục chứa không gian tên được điền và danh sách các chuỗi đối số còn lại. đưa ra lỗi nếu còn bất kỳ chuỗi đối số nào chưa được phân tích cú pháp
Mới trong phiên bản 3. 7
Nâng cấp mã optparse
Ban đầu, mô-đun đã cố gắng duy trì khả năng tương thích với. Tuy nhiên, rất khó để mở rộng một cách minh bạch, đặc biệt là với những thay đổi cần thiết để hỗ trợ bộ xác định
args = parser.parse_args[] print[args.filename, args.count, args.verbose]445 mới và thông báo sử dụng tốt hơn. Khi hầu hết mọi thứ trong đó đều đã được sao chép hoặc vá lỗi, việc cố gắng duy trì khả năng tương thích ngược dường như không còn thực tế nữa
Mô-đun cải thiện mô-đun thư viện tiêu chuẩn theo một số cách bao gồm
Xử lý đối số vị trí
Lệnh phụ hỗ trợ
Cho phép các tiền tố tùy chọn thay thế như
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
449 vàargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
450Xử lý các đối số kiểu không hoặc nhiều và một hoặc nhiều
Tạo ra nhiều thông điệp sử dụng thông tin hơn
Cung cấp giao diện đơn giản hơn nhiều cho
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
141 vàargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
64 tùy chỉnh
Đường dẫn nâng cấp một phần từ đến
Thay thế tất cả các cuộc gọi bằng cuộc gọi
Thay thế
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
457 bằngargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
458 và thêm các cuộc gọi bổ sung cho các đối số vị trí. Hãy nhớ rằng những gì trước đây được gọi là ________ 2460, bây giờ trong ngữ cảnh được gọi là ________ 2462Thay thế bằng cách sử dụng thay vì
Thay thế các hành động gọi lại và các đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
466 bằng các đối sốargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
141 hoặcargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
64Thay thế tên chuỗi cho các đối số từ khóa
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
141 bằng các đối tượng loại tương ứng [e. g. int, float, phức tạp, v.v.]Thay thế
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
470 bằng vàargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
472 vàargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
473 bằngargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
474Thay thế các chuỗi bằng các đối số ngầm định như
args = parser.parse_args[] print[args.filename, args.count, args.verbose]
475 hoặcargs = parser.parse_args[] print[args.filename, args.count, args.verbose]
476 bằng cú pháp Python tiêu chuẩn để sử dụng từ điển để định dạng chuỗi, nghĩa là,args = parser.parse_args[] print[args.filename, args.count, args.verbose]
176 vàparser.add_argument['filename'] # positional argument parser.add_argument['-c', '--count'] # option that takes a value parser.add_argument['-v', '--verbose', action='store_true'] # on/off flag
74Đối số dòng lệnh Python là gì?
Các đối số dòng lệnh của Python là các tham số đầu vào được truyền cho tập lệnh khi thực thi chúng . Hầu như tất cả các ngôn ngữ lập trình đều cung cấp hỗ trợ cho các đối số dòng lệnh. Sau đó, chúng tôi cũng có các tùy chọn dòng lệnh để thiết lập một số tùy chọn cụ thể cho chương trình.Làm cách nào để chạy tập lệnh Python từ cmd với các đối số?
Khoa học dữ liệu thực tế sử dụng Python . py và phần còn lại của ba đối số - arg1 arg2 arg3 là các đối số dòng lệnh cho chương trình. Có ba mô-đun Python sau hữu ích trong việc phân tích cú pháp và quản lý các đối số dòng lệnh. mô-đun sys . mô-đun getopt .