Tập tin vượt qua Python làm đối số
Với việc Python là ngôn ngữ lập trình rất phổ biến, cũng như hỗ trợ cho hầu hết các hệ điều hành và nhiều thư viện giúp xử lý đối số dòng lệnh dễ dàng - nó được sử dụng rộng rãi để tạo các công cụ dòng lệnh cho nhiều mục đích. Các công cụ này có thể bao gồm từ các ứng dụng CLI đơn giản đến những ứng dụng phức tạp hơn, chẳng hạn như công cụ awscli của AWS Các công cụ phức tạp như thế này thường được người dùng kiểm soát thông qua , cho phép người dùng sử dụng các lệnh cụ thể, đặt tùy chọn, v.v. Ví dụ: các tùy chọn này có thể yêu cầu công cụ xuất thông tin bổ sung, đọc dữ liệu từ một nguồn được chỉ định hoặc gửi đầu ra đến một vị trí nhất định Nói chung, các đối số được chuyển đến các công cụ CLI khác nhau, tùy thuộc vào hệ điều hành của bạn
Những cách tiếp cận khác nhau này tồn tại vì lý do lịch sử. Nhiều chương trình trên các hệ thống giống Unix hỗ trợ cả ký hiệu dấu gạch ngang đơn và dấu gạch ngang kép. Ký hiệu gạch ngang đơn chủ yếu được sử dụng với các tùy chọn một chữ cái, trong khi dấu gạch ngang kép thể hiện danh sách tùy chọn dễ đọc hơn, điều này đặc biệt hữu ích cho các tùy chọn phức tạp cần rõ ràng hơn Ghi chú. Trong bài viết này, chúng ta sẽ chỉ tập trung vào định dạng giống Unix của 5 và 7Hãy nhớ rằng cả tên và ý nghĩa của một đối số đều dành riêng cho một chương trình - không có định nghĩa chung, ngoài một số quy ước phổ biến như 8 để biết thêm thông tin về cách sử dụng công cụ. Là nhà phát triển tập lệnh Python, bạn sẽ quyết định cung cấp đối số nào cho người gọi và họ làm gì. Điều này đòi hỏi phải đánh giá đúngKhi danh sách các đối số khả dụng của bạn tăng lên, mã của bạn sẽ trở nên phức tạp hơn khi cố phân tích chúng một cách chính xác. May mắn thay, trong Python có sẵn một số thư viện giúp bạn việc này. Chúng tôi sẽ đề cập đến một số giải pháp phổ biến nhất, bao gồm từ "tự làm" với 4, đến phương pháp "làm cho bạn" với 5Xử lý đối số dòng lệnh với PythonPython 3+ và hệ sinh thái xung quanh hỗ trợ một số cách xử lý đối số dòng lệnh khác nhau. Có nhiều thư viện hỗ trợ phân tích đối số dòng lệnh Cách tích hợp sẵn là sử dụng mô-đun 6. Về tên gọi và cách sử dụng, nó liên quan trực tiếp đến thư viện C ( 7)Cách thứ hai là mô-đun 8, xử lý cả tùy chọn ngắn và dài, bao gồm cả việc đánh giá các giá trị tham sốMô-đun argparse, được bắt nguồn từ mô-đun 9 (có sẵn cho Python 2. 7)Mô-đun 0, có sẵn trên GitHub, cũng cho phép chức năng tương tựGần đây, thư viện 1 cũng đang nổi lên, như một phương tiện để thay thế 9 và 3
Mô-đun hệ thốngĐây là một mô-đun cơ bản đã được xuất xưởng với Python từ những ngày đầu. Nó có một cách tiếp cận rất giống với thư viện C bằng cách sử dụng 4/ 5 để truy cập các đối số. Mô-đun sys thực hiện các đối số dòng lệnh trong một cấu trúc danh sách đơn giản có tên là 4
Là một dấu phân cách giữa các đối số, một khoảng trắng được sử dụng. Các giá trị đối số có chứa khoảng trắng trong đó phải được bao quanh bởi dấu ngoặc kép để được phân tích cú pháp chính xác bởi 6Tương đương với 4 chỉ là số phần tử trong danh sách. Để có được giá trị này, hãy sử dụng toán tử Python 2. Chúng tôi sẽ hiển thị điều này trong một ví dụ mã sau nàyIn đối số CLI đầu tiênTrong ví dụ đầu tiên này, tập lệnh của chúng tôi sẽ xác định cách nó được gọi. Thông tin này được giữ trong đối số dòng lệnh đầu tiên, được lập chỉ mục bằng 0. Đoạn mã dưới đây cho biết cách bạn lấy tên tập lệnh Python của mình
Lưu mã này vào một tệp có tên 3, sau đó gọi nó như hình bên dưới. Đầu ra như sau và chứa tên tệp, bao gồm đường dẫn đầy đủ của nó
Như bạn có thể thấy từ lệnh gọi thứ hai ở trên, chúng tôi không chỉ nhận được tên của tệp Python mà còn có đường dẫn đầy đủ được sử dụng để gọi nó Đếm số đối sốTrong ví dụ thứ hai này, chúng ta chỉ cần đếm số lượng đối số dòng lệnh bằng cách sử dụng phương thức 2 tích hợp sẵn. 4 là danh sách mà chúng ta phải kiểm tra. Trong đoạn mã dưới đây, chúng tôi lấy số lượng đối số và sau đó trừ đi 1 vì một trong những đối số đó (i. e. cái đầu tiên) luôn được đặt làm tên của tệp, điều này không phải lúc nào cũng hữu ích với chúng tôi. Do đó, số lượng đối số thực tế được người dùng chuyển là 6Lưu và đặt tên cho tệp này là đối số. py. Một số ví dụ về cách gọi tập lệnh này được hiển thị bên dưới. Điều này bao gồm ba kịch bản khác nhau
Lặp lại thông qua các đối sốVí dụ thứ ba của chúng tôi xuất ra mọi đối số được gửi tới tập lệnh Python, ngoại trừ chính tên chương trình. Do đó, chúng tôi lặp qua các đối số dòng lệnh bắt đầu bằng phần tử danh sách thứ hai. Nhớ lại rằng đây là chỉ mục 1 vì các danh sách dựa trên 0 trong Python Dưới đây, chúng tôi gọi mã của mình, mã này đã được lưu vào tệp đối số-đầu ra. py. Như đã thực hiện với ví dụ trước của chúng tôi, đầu ra minh họa ba cuộc gọi khác nhau
Hãy nhớ rằng, điểm hiển thị ví dụ về chuỗi được trích dẫn là các tham số thường được phân tách bằng dấu cách, trừ khi chúng được bao quanh bởi dấu ngoặc kép Cờ Abseil ($ python arguments-output.py
$ python arguments-output.py --help me
Parameter 1: --help
Parameter 2: me
$ python arguments-output.py --option "long string"
Parameter 1: --option
Parameter 2: long string
|