Di chuyển mã optparse sang argparse

Mô-đun argparse cung cấp một số tính năng cấp cao hơn vốn không được cung cấp bởi mô-đun optparse, bao gồm:

  • Xử lý các đối số vị trí.

  • Hỗ trợ các lệnh phụ.

  • Cho phép tiền tố tùy chọn thay thế như +/.

  • Xử lý các đối số kiểu không hoặc nhiều và một hoặc nhiều kiểu.

  • Tạo ra nhiều thông điệp sử dụng mang tính thông tin hơn.

  • Cung cấp giao diện đơn giản hơn nhiều cho typeaction tùy chỉnh.

Ban đầu, mô-đun argparse cố gắng duy trì khả năng tương thích với optparse. Tuy nhiên, sự khác biệt cơ bản về thiết kế giữa việc hỗ trợ xử lý tùy chọn dòng lệnh khai báo (trong khi để xử lý đối số vị trí cho mã ứng dụng) và việc hỗ trợ cả tùy chọn được đặt tên và đối số vị trí trong giao diện khai báo có nghĩa là API đã khác biệt với optparse theo thời gian.

Như được mô tả trong Chọn thư viện phân tích đối số, các ứng dụng hiện đang sử dụng optparse và hài lòng với cách hoạt động của nó có thể tiếp tục sử dụng optparse.

Các nhà phát triển ứng dụng đang cân nhắc việc di chuyển cũng nên xem lại danh sách những khác biệt nội tại về hành vi được mô tả trong phần đó trước khi quyết định xem việc di chuyển có cần thiết hay không.

Đối với các ứng dụng chọn di chuyển từ optparse sang argparse, những đề xuất sau sẽ hữu ích:

  • Thay thế tất cả các cuộc gọi optparse.OptionParser.add_option() bằng các cuộc gọi ArgumentParser.add_argument().

  • Thay thế (options, args) = parser.parse_args() bằng args = parser.parse_args() và thêm các lệnh gọi ArgumentParser.add_argument() bổ sung cho các đối số vị trí. Hãy nhớ rằng cái trước đây được gọi là options, bây giờ trong ngữ cảnh argparse được gọi là args.

  • Replace optparse.OptionParser.disable_interspersed_args() by using parse_intermixed_args() instead of parse_args().

  • Thay thế các hành động gọi lại và đối số từ khóa callback_* bằng đối số type hoặc action.

  • Thay thế tên chuỗi cho các đối số từ khóa type bằng các đối tượng loại tương ứng (ví dụ: int, float, complex, v.v.).

  • Thay thế optparse.Values bằng Namespaceoptparse.OptionErroroptparse.OptionValueError bằng ArgumentError.

  • Thay thế các chuỗi bằng các đối số ngầm định như %default hoặc %prog bằng cú pháp Python tiêu chuẩn để sử dụng từ điển để định dạng chuỗi, tức là %(default)s%(prog)s.

  • Thay thế đối số version của hàm tạo OptionParser bằng lệnh gọi parser.add_argument('--version', action='version', version='<the version>').