CLI gói Python

Traitlets được tạo bởi IPython để xác thực kiểu dữ liệu, theo dõi các thay đổi đối với biến, phân tích cú pháp và triển khai cài đặt ứng dụng từ tệp cấu hình và kích hoạt mã python từ dòng lệnh. Nó hoạt động như một loại công cụ hậu trường cho phần lớn phần mềm do IPython và Dự án Jupyter sản xuất. Hiện tại, chúng tôi sẽ tập trung vào hai yếu tố của đặc điểm

  1. Kích hoạt mã python từ dòng lệnh
  2. biến cấu hình
Mục đích

Trong bài viết này, tôi sẽ hướng dẫn xây dựng một ứng dụng traitlets đơn giản. Với kiến ​​thức này, bạn sẽ có thể viết một chương trình dòng lệnh

  • Được viết hoàn toàn bằng python
  • Gán nhiều công cụ cho một lệnh CLI
  • Có thể dễ dàng cấu hình thông qua dòng lệnh hoặc trong các tệp cấu hình hệ thống. [Bạn không cần phải viết mã để phân tích dữ liệu cấu hình 🤩]
  • Có cấu trúc lập trình hướng đối tượng thẳng về phía trước

mã dự án

  • Nếu bạn muốn tự viết mã dự án, kho lưu trữ github này chứa tất cả các tệp dự án. Mã trong mỗi tệp đã được thay thế bằng các nhận xét hướng dẫn
  • Mã dự án đã hoàn thành có thể được tìm thấy tại đây. [Mã được lưu trữ trên nhánh
    --GreetApp.greeting='Hi'
    1 của kho lưu trữ github. Nếu bạn đã sao chép kho lưu trữ, bạn có thể chạy
    --GreetApp.greeting='Hi'
    2 để truy cập mã trên máy tính của mình. ]
Chúng ta đang xây dựng cái gì?

Đầu tiên chúng ta hãy xem thành phẩm trông như thế nào…

Ứng dụng này có hai lệnh

--GreetApp.greeting='Hi'
3

Khi lệnh này được chạy “Xin chào, Thế giới. ” được in ra thiết bị đầu cuối

Lệnh này có các đối số

--GreetApp.greeting='Hi'
4,
--GreetApp.greeting='Hi'
5 và
--GreetApp.greeting='Hi'
6 cho phép bạn thay đổi thông báo được in

--GreetApp.greeting='Hi'
7

Khi lệnh này được chạy, đường dẫn tuyệt đối cho tên tệp được cung cấp sẽ được in ra thiết bị đầu cuối

Lệnh này có cờ

--GreetApp.greeting='Hi'
8. Khi cờ này được sử dụng, kích thước tệp [tính bằng byte] được in ngoài đường dẫn tuyệt đối

Cấu trúc thư mục cho dự án này trông như thế này

________số 8_______

okok hãy viết một số mã

chào ứng dụng. py

Điều hướng vào thư mục

--GreetApp.greeting='Hi'
9 của thư mục dự án và mở tệp
{command : [application object, application description]}
0

Chúng tôi sẽ cần hai lần nhập cho tệp này

  1. {command : [application object, application description]}
    1
  2. {command : [application object, application description]}
    2

Trước khi tiếp tục, hãy nhanh chóng chia nhỏ hai lần nhập này

Nhập #1 — Ứng dụng

{command : [application object, application description]}
3 là “phụ huynh” cho mọi lớp chúng ta sẽ viết trong dự án này.
{command : [application object, application description]}
3đối tượng cung cấp nhiều công cụ hữu ích như , , , v.v. Trong hướng dẫn này, chúng ta sẽ tập trung vào các phương thức được sử dụng bởi đối tượng
{command : [application object, application description]}
3 để phân tích cú pháp dòng lệnh và kích hoạt mã ứng dụng

Nhập #2 — Unicode

{command : [application object, application description]}
6 là một loại đặc điểm

  • Mã ví dụ về các loại
  • Danh sách tất cả các loại có sẵn

Các loại đặc điểm là, khi được xác định, ngăn không cho các thuộc tính được gán cho kiểu dữ liệu không chính xác. Khi đối số

{command : [application object, application description]}
7 được thêm vào loại, biến sẽ có thể định cấu hình, nghĩa là giá trị mặc định cho thuộc tính có thể được thay đổi thông qua đối số dòng lệnh hoặc bằng cách đặt giá trị mặc định mong muốn bên trong tệp cấu hình

Xác định các biến cấu hình

Trong ô mã bên dưới, chúng tôi…

  1. Nhập các đối tượng
    {command : [application object, application description]}
    3 và
    {command : [application object, application description]}
    6
  2. Xác định lớp
    from traitlets.config import Application
    from traitlets import Bool
    import os
    0
  3. Kế thừa từ lớp cha
    {command : [application object, application description]}
    3
  4. Xác định biến loại với cài đặt mặc định
  5. Đánh dấu biến là có thể định cấu hình

Bây giờ hãy tạo phương thức

from traitlets.config import Application
from traitlets import Bool
import os
2

Phương pháp

from traitlets.config import Application
from traitlets import Bool
import os
3 là nơi chức năng của ứng dụng được kích hoạt

Trong khối mã bên dưới, chúng tôi…

  1. Định nghĩa một phương thức
    from traitlets.config import Application
    from traitlets import Bool
    import os
    3
  2. Kích hoạt chức năng ứng dụng

Bí danh dòng lệnh

Về mặt kỹ thuật, chúng tôi có thể để ứng dụng như thế này và nó sẽ hoạt động, nhưng việc thay đổi biến cấu hình sẽ hơi khó chịu cho người dùng

Ngay bây giờ, thay vì người dùng chạy

from traitlets.config import Application
from traitlets import Bool
import os
5 để thay đổi biến cấu hình lời chào thành
from traitlets.config import Application
from traitlets import Bool
import os
6 , người dùng sẽ phải chạy

--GreetApp.greeting='Hi'

Để làm điều này dễ dàng hơn, chúng ta phải tạo một thuộc tính lớp

from traitlets.config import Application
from traitlets import Bool
import os
7. Thuộc tính này được sử dụng bởi lớp cha
{command : [application object, application description]}
3 trong khi phân tích cú pháp dòng lệnh

Trong khối mã bên dưới, chúng tôi…

  1. Xác định một từ điển chứa bí danh của chúng tôi
  2. Đặt các khóa từ điển cho các đối số dòng lệnh mà chúng tôi muốn sử dụng
  3. Đặt giá trị cho tên của con
    {command : [application object, application description]}
    3 mà chúng tôi muốn định cấu hình
  4. Làm rõ biến có thể định cấu hình mà chúng tôi muốn thay đổi
  5. Đặt đặc điểm lớp
    from traitlets.config import Application
    from traitlets import Bool
    import os
    7 thành từ điển bí danh

--size
1 đã xong

Có một vài thứ khác mà chúng ta có thể thêm vào ứng dụng này sẽ được đề cập trong bài viết tiếp theo “Cách tạo tài liệu tự động. ” Nếu bạn đang làm việc với các tệp tự viết mã, hãy bỏ qua các phần chưa điền ngay bây giờ. Họ không cần thiết cho bài viết này

chức năng chính

Bây giờ chúng ta đã hoàn thành một ứng dụng, chúng ta cần thiết lập hàm

--size
2 để kích hoạt mã. Quá trình này sẽ được xử lý bởi tệp
--size
3

Điều hướng đến tệp

--size
3

Đối với tệp này, chúng tôi sẽ cần các lần nhập sau

  1. {command : [application object, application description]}
    1
  2. --size
    6 [Đối tượng ứng dụng chúng ta vừa viết. ]

{command : [application object, application description]}
3 đối tượng có một thuộc tính gọi là
--size
8 cho phép bạn đính kèm các lệnh để kích hoạt các ứng dụng cụ thể. Trong tệp này, chúng tôi sẽ định nghĩa một ứng dụng có tên là
--size
9 chứa từ điển các lệnh con và phương thức bắt đầu để kích hoạt phương thức
from traitlets.config import Application
from traitlets import Bool
import os
3 của lệnh con. TL;DR
--size
9 là một ứng dụng với mục đích duy nhất là kích hoạt mã cho các ứng dụng khác

Hãy viết điều này ra

Trong khối mã bên dưới, chúng tôi…

  1. Nhập các đối tượng
    {command : [application object, application description]}
    3 và
    from traitlets.config import Application
    from traitlets import Bool
    import os
    0
  2. Xác định ứng dụng traitlets4
  3. Xác định một từ điển với định dạng sau
{command : [application object, application description]}

4. Xác định một phương thức

from traitlets.config import Application
from traitlets import Bool
import os
3

5. Kiểm tra để đảm bảo rằng người dùng đã cung cấp một tiểu ban. Nếu họ chưa in các tiểu ban có sẵn

6. Kích hoạt traitlets6 để lần lượt kích hoạt phương thức

from traitlets.config import Application
from traitlets import Bool
import os
3 của ứng dụng phụ

Vâng. Đó là

--size
9

Bây giờ điều cuối cùng chúng ta cần làm là định nghĩa một chức năng chính kích hoạt tất cả mã

Trong khối mã bên dưới, chúng tôi…

  1. Định nghĩa hàm
    --size
    2 bên ngoài hàm sys0
  2. Kích hoạt mã thông qua ________ 61 _______ 1. Đây là nơi dòng lệnh được phân tích cú pháp
  3. Thêm kiểm tra sys2 cho phép chúng tôi gọi hàm
    --size
    2 từ dòng lệnh

Bây giờ chúng tôi có một ứng dụng làm việc. 🥳

Trong thiết bị đầu cuối của bạn, điều hướng đến cấp cao nhất của thư mục dự án và chạy

  • sys4 “Xin chào, Thế giới. ” sẽ được in
  • sys5 “Xin chào, Thế giới. ” sẽ được in
  • sys6 “Xin chào, Joel. ” sẽ được in
ứng dụng abs. py — Thêm lệnh mới

Bây giờ, hãy xem quy trình thêm công cụ mới vào ứng dụng hiện có bằng cách tạo lệnh sys7

Bên trong tệp sys8, chúng tôi sẽ chạy các lần nhập sau

from traitlets.config import Application
from traitlets import Bool
import os

Hai hàng nhập khẩu mới là sys9 và argparse0

Bool là một thứ khác. Trong trường hợp này, nó đảm bảo rằng biến được đặt thành argparse1 hoặc argparse2

os là một gói Python cơ sở viết tắt của “Hệ điều hành”. Nó là một gói tiêu chuẩn được sử dụng để tạo đường dẫn tệp, liệt kê các tệp trong một thư mục và để tương tác với hệ điều hành của máy tính. Trong trường hợp của chúng tôi, chúng tôi sẽ sử dụng argparse3 để tạo đường dẫn tuyệt đối cho một tệp và để tính toán số lượng byte mà một tệp sử dụng

Ok, tiếp theo chúng ta sẽ xây dựng lớp argparse4

Trong ô bên dưới, chúng tôi…

  1. Xác định ứng dụng argparse5
  2. Xác định một biến có thể định cấu hình_______70_______6 với loại tính trạng là argparse7
  3. Định nghĩa một phương thức
    from traitlets.config import Application
    from traitlets import Bool
    import os
    3
  4. Truy cập tên tệp đã được cung cấp bởi người dùng thông qua argparse9
  5. Đảm bảo tệp do người dùng cung cấp là tệp hợp lệ thông qua chức năng os if/else0
  6. In đường dẫn tuyệt đối cho tên tệp được cung cấp
  7. Nếu người dùng đã đặt biến cấu hình argparse6 thành argparse1 thì kích thước tệp cũng được in

Bây giờ, chúng tôi sẽ tạo một cờ cho AbsApp cho phép người dùng chỉ cần chạy…

--size

…mà không cần phải đặt rõ ràng argparse6 thành Đúng hoặc Sai. Để làm điều này, chúng ta sẽ định nghĩa một biến lớp if/else4 được sử dụng bởi lớp cha

{command : [application object, application description]}
3 trong khi phân tích cú pháp dòng lệnh

Trong ô bên dưới, chúng tôi…

  1. Định nghĩa một biến if/else6 có tên là if/else4
  2. Đặt khóa cấp cao nhất thành cờ sẽ được sử dụng trong dòng lệnh
  3. Đặt giá trị của khóa thành if/else8
  4. Thêm một từ điển vào bộ trong đó khóa là tên của ứng dụng sẽ được định cấu hình bằng cờ
  5. Đặt giá trị của khóa thành một từ điển khác trong đó khóa là tên của biến có thể định cấu hình và giá trị là dữ liệu muốn gán cho biến
  6. Thêm mô tả cho cờ dưới dạng mục thứ hai bên trong bộ dữ liệu. Điều này sẽ được in nếu người dùng sử dụng đối số if/else9
  7. Thêm cờ vào ứng dụng thông qua thuộc tính traitlets0

Đáng chú ý. cờ khá mạnh khi cập nhật cấu hình. Từ điển cấp hai có thể chứa nhiều ứng dụng và từ điển cấp ba có thể chứa nhiều biến cấu hình

AbsApp đã hoàn tất. ✅

Bây giờ, bước cuối cùng là thêm ứng dụng vào tệp

--size
3

Trong khối mã bên dưới, chúng tôi…

  1. Nhập đối tượng argparse5 vào tệp
    --size
    3
  2. Thêm một lệnh phụ sys7 vào đối tượng
    --size
    9

Và cứ như thế, một lệnh mới được thêm vào ứng dụng của bạn

Trong thiết bị đầu cuối của bạn, điều hướng đến cấp cao nhất của thư mục dự án và chạy

  • traitlets6 Đường dẫn tuyệt đối cho CLIapp. tập tin py sẽ được in
  • traitlets7 Đường dẫn tuyệt đối và kích thước tệp cho CLIapp. tập tin py sẽ được in

Theo kinh nghiệm của riêng tôi khi viết các ứng dụng với traitlet, việc dễ dàng viết các ứng dụng mới và thêm các lệnh mới vào một công cụ hiện có là một trong những đặc quyền tốt nhất. Bởi vì quá trình này bắt nguồn từ Lập trình hướng đối tượng, đôi khi việc viết một ứng dụng hoàn toàn mới cũng đơn giản như kế thừa từ một ứng dụng hiện có và sau đó chỉnh sửa một dòng mã.

Được rồi, đó là nó cho bây giờ. Hãy chắc chắn nhấp vào nút theo dõi cho bài viết tiếp theo của tôi. Hướng dẫn về tệp cấu hình đặc điểm và cách tự động tạo tài liệu mã

Làm cách nào để chạy gói Python từ dòng lệnh?

Để chạy tập lệnh Python bằng lệnh python, bạn cần mở một dòng lệnh và nhập từ python hoặc python3 nếu bạn có cả hai phiên bản, theo sau là đường dẫn . $ python3 xin chào. py Xin chào thế giới. , just like this: $ python3 hello.py Hello World!

CLI trong Python là gì?

Gói cli là khung để tạo các ứng dụng dòng lệnh chính xác, đơn giản trong Python . Với cli, bạn có thể nhanh chóng thêm phân tích cú pháp dòng lệnh tiêu chuẩn; .

Làm cách nào để cài đặt Python CLI?

Cài đặt Python, pip và EB CLI trên Windows .
Tải xuống Python 3. 7 Trình cài đặt thực thi Windows x86-64 từ trang tải xuống của Python. tổ chức
Chạy trình cài đặt
Chọn Thêm Python 3. 7 đến ĐƯỜNG
Chọn Cài đặt ngay

Làm cách nào để tạo CLI trong Python?

Một cách thuận tiện hơn nhiều để tạo ứng dụng CLI trong Python là sử dụng mô-đun argparse có trong thư viện chuẩn. .
Phân tích các đối số và tùy chọn dòng lệnh
Lấy một số lượng tham số khác nhau trong một tùy chọn duy nhất
Cung cấp các tiểu ban trong CLI của bạn

Chủ Đề