Con trăn getopt

Một trong những điểm mạnh của Python là nó có khả năng làm mọi thứ. Thư viện tiêu chuẩn của nó đi kèm với đủ tính năng để viết nhiều tập lệnh và công cụ hữu ích. Nếu cần bất cứ điều gì ngoài điều đó, nhiều tính năng hơn chỉ cách

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
8

Hầu hết mọi ngôn ngữ lập trình hiện đại đều có khả năng nhận đối số từ dòng lệnh. Đây là một tính năng rất quan trọng vì nó cho phép người dùng nhập dữ liệu động, cho dù họ có viết chương trình hay không.

Python đi kèm với một số thư viện khác nhau cho phép mã Python của bạn lấy đầu vào của người dùng từ lệnh bao gồm

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
9,
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
0 và
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
1. Ngày nay,
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
1 cho đến nay là tốt nhất và được sử dụng phổ biến nhất

Thư viện Python argparse đã được phát hành như một phần của thư viện chuẩn với Python 3. 2. Sau bản phát hành đó và do tính phổ biến của nó, nó đã được tích hợp vào Python 2. 7 và tất cả các phiên bản Python trong tương lai, nhanh chóng trở thành tiêu chuẩn vàng để làm việc với các đối số dòng lệnh. Nó có một số tính năng mong muốn giúp sử dụng các đối số dòng lệnh trong Python khá linh hoạt và hữu ích cho các chương trình của chúng tôi

  • Bạn có thể thiết lập các thông báo trợ giúp và tài liệu cho các đối số dòng lệnh
  • Đặt giá trị mặc định cho các đối số theo cách rõ ràng và dễ đọc
  • Có một số tùy chọn đã đặt cho một đối số dòng lệnh cụ thể
  • Tự động chuyển đổi loại trên đầu vào
  • Nó hỗ trợ một số lượng tham số khác nhau cho một đối số
  • Nó có thể tự động áp dụng một hành động hoặc chức năng cho đầu vào của bạn, theo chỉ định của bạn

Lưu ý đến tất cả các tính năng chính này, chúng ta hãy tham gia một chuyến tham quan có hướng dẫn về thư viện

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
1 của Python

Kỹ sư phần mềm Resume Builder. gitconnected

Tạo miễn phí sơ yếu lý lịch kỹ thuật phần mềm chất lượng cao trong vòng chưa đầy 5 phút. Đồng bộ hóa hồ sơ của bạn và chúng tôi xử lý…

gitconnected. com

Thiết lập ban đầu

Để bắt đầu, hãy mở tập lệnh Python trống. Thư viện argparse được tích hợp sẵn trong Python, vì vậy chúng tôi không cần bất kỳ quy trình cài đặt nào. Đoạn mã dưới đây cho thấy cách tạo thiết lập ban đầu cho argparse

Có 3 thành phần quan trọng trong đoạn mã trên

  1. Nhập khẩu
    usage: run.py [-h] [--a A] --name NAME
    run.py: error: the following arguments are required: --name
    1
  2. Tạo Trình phân tích cú pháp đối số (có mô tả)
  3. Phân tích đối số dòng lệnh

Bước 2 là nơi chúng ta tạo đối tượng trình phân tích cú pháp, trong đó chúng ta có thể thêm các đối số dòng lệnh cùng với một số tùy chọn cho mỗi đối số. Bước 3 chạy một hàm thực sự trích xuất các đối số từ dòng lệnh do người dùng nhập vào

Cái hay là

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
1 sẽ tự động hoạt động với dòng lệnh chỉ với thiết lập đơn giản này. Hãy thử chạy chương trình với một
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
1 ở cuối và xem cách
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
1 in ra mô tả của chúng tôi về Hướng dẫn argparse

Bây giờ, hãy thêm một đối số dòng lệnh có tên là “a” như được hiển thị trong mã bên dưới. Để truyền đối số dòng lệnh cho tập lệnh Python, hãy thực thi nó bằng cách chạy

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
3

Lưu ý cách chúng tôi sử dụng hàm

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
4 để chuyển “a” làm đối số dòng lệnh. Để truy cập vào biến mà chúng tôi nhận được từ
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
5, chúng tôi sử dụng
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
6

Một điều quan trọng cần lưu ý là nếu chúng ta không chỉ định giá trị cho

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
5 tại dòng lệnh, thì
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
6 sẽ là
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
9. Một cách để giải quyết vấn đề này là chỉ định một giá trị mặc định cho
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
5 trong Trình phân tích cú pháp đối số như được hiển thị bên dưới. Lưu ý cách chúng tôi cũng đã thêm mô tả lần này

Trong trường hợp này, nếu chúng ta không chuyển giá trị cho

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
5 qua dòng lệnh, thì giá trị của nó sẽ chỉ mặc định là 1. Bằng cách thêm một chuỗi cho biến
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
02, chúng tôi cũng có thể in ra một mô tả mạnh mẽ hơn cho từng biến khi áp dụng
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
1

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
2Cách sử dụng thông thường cho đối số dòng lệnh

Hãy đi sâu vào một số tùy chọn thú vị hơn với

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
1. Trước hết, chúng ta có thể chỉ định thông tin loại của từng biến sao cho việc chuyển đổi loại được thực hiện ngay trên đầu vào

Một cách tuyệt vời để đảm bảo rằng người dùng luôn chuyển một giá trị cho một đối số cụ thể là sử dụng từ khóa

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
05. Khi được đặt thành
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
06, điều này buộc người dùng phải nhập giá trị đó, nếu không chương trình sẽ báo lỗi và dừng

Nếu chúng tôi cung cấp một giá trị cho đối số

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
07 thì tất cả đều ổn. Nếu không, chúng tôi sẽ nhận được thông báo lỗi như thế này

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name

Chúng tôi cũng có thể giới hạn các giá trị có thể có cho một đối số dòng lệnh cụ thể bằng cách sử dụng đối số

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
08. Điều này đặc biệt hữu ích khi bạn có một tập hợp các câu lệnh if-else trong mã của mình để thực thi các thao tác nhất định dựa trên một chuỗi cụ thể. Kiểm tra mã dưới đây cho một ví dụ

Bây giờ nếu chúng tôi nhập bất kỳ giá trị nào trong danh sách lựa chọn của mình, mã sẽ chạy tốt và nhận đối số

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
09 của chúng tôi. Nhưng nếu bạn đưa cho nó thứ gì đó không có trong danh sách, chẳng hạn như số
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
80, thì bạn sẽ nhận được một thông báo giống như bên dưới yêu cầu bạn chọn thứ gì đó từ danh sách

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
0Thủ thuật và Cách sử dụng Nâng cao

Bây giờ là lúc để trở nên cáu kỉnh một chút với một số argparse nâng cao

Đối số

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
81 cho phép chúng tôi chỉ định một số hành động mà chúng tôi muốn Trình phân tích cú pháp đối số của chúng tôi thực hiện. Ví dụ: chúng tôi có thể muốn có một đối số được tự động đặt thành boolean của
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
06 nếu nó tồn tại hoặc là một hằng số. Cả hai trường hợp này được hiển thị trong ví dụ dưới đây

Trong đoạn mã trên, về cơ bản chúng ta đang nói rằng nếu có đối số dòng lệnh

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
5 thì
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
5 sẽ là
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
06, nếu không thì
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
5 sẽ là
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
87. Tương tự, nếu có đối số dòng lệnh
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
88, thì nó phải được đặt thành giá trị là
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
89, nếu không thì nó sẽ là
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
9 vì không có giá trị mặc định

Chúng tôi cũng có thể thiết lập những gì được gọi là nhóm loại trừ lẫn nhau. Điều này làm là xác định một tập hợp các đối số dòng lệnh của trình phân tích cú pháp loại trừ lẫn nhau — tôi. e rằng các đối số dòng lệnh đó không thể được truyền cùng lúc

Hãy xem xét đoạn mã dưới đây như một ví dụ

Các đối số

usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
1
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
5 và
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
88 được thêm vào cùng một nhóm loại trừ lẫn nhau. Do đó, Python sẽ không cho phép bạn gửi
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
5 và
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
88 cùng lúc như thế này
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
96, bạn sẽ phải gửi từng cái một. Điều này hữu ích khi bạn muốn đảm bảo rằng người dùng không vượt qua bất kỳ biến xung đột nào cùng một lúc, để tránh mọi nhầm lẫn hoặc lỗi

Thích học hỏi?

Theo dõi tôi trên Twitter, nơi tôi đăng tất cả về AI, Công nghệ và Khoa học mới nhất và tuyệt vời nhất. Kết nối với tôi trên LinkedIn nữa