使用 Python 和 Typer 構建命令行待辦事項應用程序(使用驅動器u盤之前需要格式化)
目錄
演示
項目概況
先決條件
第 1 步:設置待辦事項項目
設置工作環境
定義項目布局
第 2 步:使用 Python 和 Typer 設置 To-Do CLI 應用程序
創建 Typer CLI 應用程序
創建入口點腳本
使用 pytest 設置初始 CLI 測試
步驟 3:準備待辦事項數據庫以供使用
設置應用程序的配置
準備好待辦事項數據庫以供使用
實現 init CLI 命令
第 4 步:設置待辦事項應用程序后端
定義單一待辦事項
與 CLI 通信
與數據庫通信
編寫控制器類 Todoer
第 5 步:編寫添加和列出待辦事項功能的代碼
為 Todoer.add() 定義單元測試
實現 add CLI 命令
實現 list 命令
第 6 步:編寫待辦事項完成功能
第 7 步:編寫刪除待辦事項功能的代碼
實施 remove CLI 命令
實現清晰的 CLI 命令
結論
下一步
當您正在學習一種新的編程語言或試圖將您的技能提升到一個新的水平時,構建一個應用程序來管理您的待辦事項列表可能是一個有趣的項目。在本教程中,您將使用 Python 和Typer為命令行構建一個功能性待辦事項應用程序,這是一個相對年輕的庫,幾乎可以立即創建強大的命令行界面 (CLI) 應用程序。
通過這樣的項目,您將應用廣泛的核心編程技能,同時構建具有真實功能和需求的真實應用程序。
在本教程中,您將學習如何:
使用Python 中的Typer CLI構建功能性待辦事項應用程序
使用 Typer 向您的待辦事項應用程序添加命令、參數和選項
使用 TyperCliRunner和pytest測試您的 Python 待辦事項應用程序
此外,您還練習與加工技能JSON文件使用Python的json模塊和管理配置文件與Python的configparser模塊。了解這些知識后,您就可以立即開始創建 CLI 應用程序了。
您可以通過單擊下面的鏈接并轉到source_code_final/目錄來下載此待辦事項 CLI 應用程序的整個代碼和所有其他資源:
演示
在這個循序漸進的項目中,您將構建一個命令行界面 (CLI)應用程序來管理待辦事項列表。您的應用程序將提供基于 Typer 的 CLI,這是一個用于創建 CLI 應用程序的現代多功能庫。
在開始之前,請查看此演示,了解在完成本教程后您的待辦事項應用程序的外觀和工作方式。演示的第一部分展示了如何獲得使用應用程序的幫助。它還展示了如何初始化和配置應用程序。視頻的其余部分演示了如何與基本功能交互,例如添加、刪除和列出待辦事項:
好的!該應用程序具有用戶友好的 CLI,允許您設置待辦事項數據庫。在那里,您可以使用適當的命令、參數和選項添加、刪除和完成待辦事項。如果您遇到困難,那么您可以使用--help帶有適當參數的選項尋求幫助。
你想開始這個待辦應用項目嗎?涼爽的!在下一部分中,您將計劃如何構建項目的布局以及將使用哪些工具來構建它。
項目概況
當您想要啟動一個新應用程序時,您通常首先考慮您希望該應用程序如何工作。在本教程中,您將為命令行構建一個待辦事項應用程序。您將調用該應用程序rptodo。
您希望您的應用程序具有用戶友好的命令行界面,允許您的用戶與應用程序交互并管理他們的待辦事項列表。
首先,您希望 CLI 提供以下全局選項:
-v或--version顯示當前版本并退出應用程序。
--help?顯示整個應用程序的全局幫助消息。
您將在許多其他 CLI 應用程序中看到這些相同的選項。提供它們是個好主意,因為大多數使用命令行的用戶都希望在每個應用程序中都能找到它們。
關于管理待辦事項列表,您的應用程序將提供用于初始化應用程序、添加和刪除待辦事項以及管理待辦事項完成狀態的命令:
這些命令提供了將待辦事項應用程序轉變為最小可行產品 (MVP)所需的所有功能,以便您可以將其發布到 PyPI或您選擇的平臺,并開始從用戶那里獲得反饋。
要在您的待辦事項應用程序中提供所有這些功能,您需要完成一些任務:
構建能夠接受和處理命令、選項和參數的命令行界面
選擇合適的數據類型來表示您的待辦事項
實現一種持久存儲待辦事項列表的方法
定義將用戶界面與待辦事項數據連接的方法
這些任務與所謂的模型-視圖-控制器設計密切相關,這是一種架構模式。在這種模式中,模型處理數據,視圖處理用戶界面,控制器連接兩端使應用程序工作。
在您的應用程序和項目中使用此模式的主要原因是提供關注點分離 (SoC),使代碼的不同部分獨立處理特定概念。
您需要做出的下一個決定是關于您將用于處理您進一步定義的每個任務的工具和庫。換句話說,您需要決定您的軟件堆棧。在本教程中,您將使用以下堆棧:
用于構建待辦事項應用程序 CLI 的Typer
命名元組和字典來處理待辦事項數據
json用于管理持久數據存儲的Python模塊
您還將使用configparserPython標準庫中的模塊來處理配置文件中應用程序的初始設置。在配置文件中,您將在文件系統中存儲待辦事項數據庫的路徑。最后,您將使用pytest作為測試 CLI 應用程序的工具。
先決條件
要完成本教程并充分利用它,您應該熟悉以下主題:
模型-視圖-控制器模式
命令行界面 (CLI)
Python 類型提示,也稱為類型注釋
使用 pytest 進行單元測試
Python中的面向對象編程
配置文件?configparser
帶有 Python 的 JSON 文件?json
文件系統路徑操作?pathlib
就是這樣!如果您已準備好動手并開始創建待辦事項應用程序,那么您可以從設置工作環境和項目布局開始。
第 1 步:設置待辦事項項目
要開始編寫待辦事項應用程序,您需要設置一個工作 Python 環境,其中包含您將在此過程中使用的所有工具、庫和依賴項。然后你需要給項目一個連貫的 Python應用程序布局。這就是您將在以下小節中執行的操作。
要下載您將在本節中創建的所有文件和項目結構,請單擊下面的鏈接并轉到source_code_step_1/目錄:
設置工作環境
在本節中,您將創建一個Python 虛擬環境來處理您的待辦事項項目。為每個獨立項目使用虛擬環境是 Python 編程的最佳實踐。它允許您隔離項目的依賴項,而不會弄亂您的系統 Python 安裝或破壞使用相同工具和庫的不同版本的其他項目。
注意:本項目使用Python 3.9.5構建和測試,代碼應適用于大于或等于 3.6 的 Python 版本。
要創建 Python 虛擬環境,請移至您喜歡的工作目錄并創建一個名為rptodo_project/.?然后啟動終端或命令行并運行以下命令:
$ cd rptodo_project/ $ python -m venv ./venv $ source venv/bin/activate (venv) $
在這里,您首先rptodo_project/使用cd.?該目錄將是您項目的根目錄。然后使用venv標準庫創建一個 Python 虛擬環境。to 的參數venv是托管虛擬環境的目錄的路徑。通常的做法是調用該目錄venv,.venv或者env,根據自己的喜好。
第三個命令激活您剛剛創建的虛擬環境。您知道環境處于活動狀態,因為您的提示更改為類似(venv) $.
注意:要在 Windows 上創建和激活虛擬環境,您將遵循類似的過程。
繼續并運行以下命令:
c:\> python -m venv venv c:\> venv\Scripts\activate.bat
如果您在不同的平臺上,那么您可能需要查看有關創建虛擬環境的 Python 官方文檔。
現在您有了一個工作的虛擬環境,您需要安裝 Typer來創建 CLI 應用程序和pytest來測試應用程序的代碼。要安裝 Typer 及其所有當前可選依賴項,請運行以下命令:
(venv) $ python -m pip install typer==0.3.2 colorama==0.4.4 shellingham==1.4.0
此命令安裝 Typer 及其所有推薦的依賴項,例如Colorama,以確保顏色在您的命令行窗口中正常工作。
要安裝 pytest(稍后您將使用它來測試待辦事項應用程序),請運行以下命令:
(venv) $ python -m pip install pytest==6.2.4
使用最后一條命令,您成功安裝了開始開發待辦事項應用程序所需的所有工具。您將使用的其余庫和工具是 Python 標準庫的一部分,因此您無需安裝任何東西即可使用它們。
定義項目布局
完成待辦應用項目設置的最后一步是創建將構成應用程序布局的包、模塊和文件。應用程序的核心包將rptodo/位于rptodo_project/.
下面是對包內容的描述:
您還需要一個tests/包含__init__.py文件的目錄來將目錄轉換為包,以及一個test_rptodo.py文件來保存應用程序的單元測試。
繼續并使用以下結構創建項目的布局:
rptodo_project/ │ ├── rptodo/ │ ├── __init__.py │ ├── __main__.py │ ├── cli.py │ ├── config.py │ ├── database.py │ └── rptodo.py │ ├── tests/ │ ├── __init__.py │ └── test_rptodo.py │ ├── README.md └── requirements.txt
該README.md文件將提供項目的描述以及安裝和運行應用程序的說明。向README.md您的項目添加描述性和詳細的文件是編程的最佳實踐,尤其是當您計劃將項目作為開源發布時。
該requirements.txt文件將為您的待辦事項應用程序提供依賴項列表。繼續填寫以下內容:
typer==0.3.2 colorama==0.4.4 shellingham==1.4.0 pytest==6.2.4
現在您的用戶可以通過運行以下命令自動安裝列出的依賴項:
(venv) $ python -m pip install -r requirements.txt
提供這樣的一個requirements.txt可確保您的用戶將安裝您用于構建項目的依賴項的確切版本,從而避免意外問題和行為。
除了requirements.txt,此時您的所有項目文件都應該是空的。在本教程中,您將使用必要的內容填充每個文件。在下一節中,您將使用 Python 和 Typer 對應用程序的 CLI 進行編碼。
第 2 步:使用 Python 和 Typer 設置 To-Do CLI 應用程序
此時,您的待辦事項應用程序應該有一個完整的項目布局。您還應該有一個可運行的 Python 虛擬環境,其中包含所有必需的工具和庫。在此步驟結束時,您將擁有一個功能強大的 Typer CLI 應用程序。然后,您將能夠在其最小功能的基礎上進行構建。
您可以通過單擊下面的鏈接并轉到source_code_step_2/目錄來下載將在此部分中添加的代碼、單元測試和資源:
啟動您的代碼編輯器并__init__.py從rptodo/目錄中打開文件。然后在其中添加以下代碼:
"""Top-level package for RP To-Do.""" # rptodo/__init__.py __app_name__ = "rptodo" __version__ = "0.1.0" ( SUCCESS, DIR_ERROR, FILE_ERROR, DB_READ_ERROR, DB_WRITE_ERROR, JSON_ERROR, ID_ERROR, ) = range(7) ERRORS = { DIR_ERROR: "config directory error", FILE_ERROR: "config file error", DB_READ_ERROR: "database read error", DB_WRITE_ERROR: "database write error", ID_ERROR: "to-do id error", }
在這里,您首先定義兩個模塊級名稱來保存應用程序的名稱和版本。然后,你定義一系列的返回值和錯誤代碼和整型的號碼給他們使用range()。ERROR是一個將錯誤代碼映射到人類可讀的錯誤消息的字典。您將使用這些消息告訴用戶應用程序發生了什么。
有了這些代碼,您就可以創建 Typer CLI 應用程序的框架了。這就是您將在下一節中執行的操作。
創建 Typer CLI 應用程序
IoT Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。