8個無需編寫代碼即可使用Python內置庫的方法

来源:https://www.cnblogs.com/123456feng/archive/2022/04/18/16153839.html
-Advertisement-
Play Games

近幾年 Python 語言之所以流行,是因為我們可以使用它編寫更少的代碼來實現複雜的功能。Python 開發者社區非常歡迎那些封 裝了複雜實現但是對使用者十分友好的工具包。 然而,Python 的簡便性不止如此。你能相信我們可以在不寫任何代碼的情況下使用 Python 嗎?在接下來的文章中,我會介紹 ...


近幾年 Python 語言之所以流行,是因為我們可以使用它編寫更少的代碼來實現複雜的功能。Python 開發者社區非常歡迎那些封

裝了複雜實現但是對使用者十分友好的工具包。

然而,Python 的簡便性不止如此。你能相信我們可以在不寫任何代碼的情況下使用 Python 嗎?在接下來的文章中,我會介紹 8

個無需編寫任何代碼即可使用 Python 內置功能的例子。

在這裡插入圖片描述

0. Python CLI “-m”參數

我們首先從 Python CLI(命令行界面)開始談起。雖然我們不必編寫代碼來使用稍後介紹的功能,但是為了讓 Python 知道我們

要執行的內容,我們需要使用 Python 命令行來進行操作。

只要我們的電腦上安裝了 Python 環境,我們就可以在 Python 命令行界面輸入python --help顯示所有支持的參數。

在這裡插入圖片描述

由於命令輸出的內容太長,上圖僅顯示了部分內容。這裡最想強調的是-m mod參數,它會將 Python 模塊以腳本的形式運行。因

此,如果該模塊的實現支持命令行操作,我們就可以在命令行直接使用它。接下來就讓我們體驗一下:)

在這裡插入圖片描述

1. 服務埠測試

有時候,我們想測試 ip 埠的出站網路流量,通常 telnet 命令是一個不錯的選擇。在 Windows 平臺上預設沒有安裝 telnet 軟

件,使用前需要手動安裝。如果只是進行簡單的測試,未來使用場景也不多,安裝它可能是一種資源浪費。

但是,如果安裝了 Python,那就不必下載安裝 telnet,因為 Python 內置了 telnet 對應的模塊。我們可以對 Google 搜索網站的

443 埠進行測試。

Python學習交流Q群:906715085###
python -m telnetlib -d 142.250.70.174 443

 

在這裡插入圖片描述

如上圖所示,網路流量顯示正常,我們甚至收到了來自 Google 空字元的響應。如果我們嘗試訪問 ip 的隨機一個埠,則會拋出

錯誤,如下圖所示。

python -m telnetlib -d 142.250.70.174 999

 

在這裡插入圖片描述

2. 本地啟動 web 服務

很多 Python 使用者不知道這一點,當第一次聽說後會感到驚訝。是的,我們可以使用 Python 啟動 web 服務,而無需編寫任何

代碼,只需按如下方式在命令行執行如下命令。

python -m http.server

 

在這裡插入圖片描述

運行後,顯示該服務監聽了本地的 8000 埠,然後,我們就可以嘗試從瀏覽器進行訪問 http://localhost:8000/。

在這裡插入圖片描述

該 web 服務會以根目錄的形式展示在命令啟動路徑下的本地文件系統,換句話說,我們無法訪問它的父級目錄。

你可能會問,這個功能的使用場景是什麼。舉一個例子,如果你想跟你的好伙伴們分享你電腦某個目錄下的許多文本/PDF/圖像文

件/子目錄文件等,那麼使用這個方法就可以非常輕鬆地進行共用了。
在這裡插入圖片描述

如果你想知道更多關於這個話題的內容,可以參考3 Lines of Python Code to Write A Web Server這篇文章。如果你按照上面的文

章實現了一個“低代碼”的解決方案,那麼就可以向它添加更多的自定義功能了。

3. 驗證及格式化 JSON 字元串

如果你有一個非常長且未經格式化的 JSON 字元串,那麼閱讀起來會非常困難。通常,我會使用一些帶有 JSON 插件的文本編輯

器,比如 Sublime 或者 VS Code,來格式化 JSON 字元串。但是,如果手頭沒有這些工具,Python 可以臨時一用。比如下麵會

以這個簡短的 JSON 字元串進行展示。

echo '{"name": {"first_name":"Chris", "last_name":"Tao"} "age":33}'

 

在這裡插入圖片描述

可以看到,當前操作系統的命令行工具只能按照原字元串的原始格式進行展示。但是,如果藉助 Python 的 json.tool工具,JSON

字元串就會被很好的格式化。

echo '{"name": {"first_name":"Chris", "last_name":"Tao"} "age":33}' | python -m json.tool

 

在這裡插入圖片描述

Oops!JSON 字元串無效,並且 json.tool 幫助我們定位了問題。我們在名稱對象後面漏掉了一個逗號。所以添加逗號以使該

JSON 合法有效。

echo '{"name": {"first_name":"Chris", "last_name":"Tao"}, "age":33}' | python -m json.tool

 

在這裡插入圖片描述

現在,JSON 字元串具有了完美縮進的格式化輸出!更加方便閱讀。

在這裡插入圖片描述

4. 創建文本編輯器

你沒看錯,我們可以使用 Python 來”創建”一個文本編輯器。當然,它的功能非常有限,但是如果當前沒有更好的選擇,使用它會

方便很多。另外,功能上肯定無法與 Vim 和 Nanos 相比,但是它完全是基於 UI 編輯器而不是命令行文本形式。這個編輯器由基

於 Tkinter 實現的idlelib 模塊創建,所以它是可以跨平臺運行的。

假設我們要編寫一個簡單的 Python 程式來顯示當前的時間,我想快速編寫代碼而不想下載和安裝龐大的代碼編輯工具。現在讓我

們運行下麵這個命令。

mkdir get_time_apppython -m idlelib get_time_app/print_time.py

 

如果文件目錄不存在,idlelib將無法創建,因此如果必要,我們需要創建一個。我們運行完這個命令之後,print_time.py 只有執行

保存的情況下才會創建到本地。現在應該會彈出編輯器,我們可以在裡面寫一些代碼, 可以看到代碼是支持語法高亮的。

在這裡插入圖片描述

現在我們使用ctrl+s快捷鍵對編輯好的代碼進行保存,並關閉編輯視窗。接下來使用命令行查看一下編輯好的代碼文件進行驗證,

沒有任何問題。

cat get_time_app/print_time.py

 

在這裡插入圖片描述

5. 創建可執行應用程式

如果我們想要創建一個簡單的應用,比如前面寫的獲取當前時間的應用程式,我們不必再需要像 PyInstaller 這樣的第三方工具

包,Python 內置的 Zipapp 就可以做到。假設我們要打包成一個"Get Time"的應用,我們可以在命令行運行下麵的命令。

python -m zipapp get_time_app -m "print_time:main"

 

在該命令中,我們只需要給 zipapp設置get_time_app名稱,指定 Python 程式的入口文件及其程式入口函數即可。以.pyz為擴展

名的文件就是我們創建的應用程式,至此我們就可以將項目作為單個文件而不是文件夾進行分發。

在這裡插入圖片描述

該程式的啟動方式也很簡單,直接使用 Python 進行調用即可。

python get_time_app.pyz

 

6. 編碼和解碼字元串或文件

通過 Python CLI,我們可以加密字元串或文件。我們以有趣的 ROT13 加密演算法為例進行展示。ROT13 是一種偏移 13 位的凱撒

密碼,它的加密原理如下圖所示。

在這裡插入圖片描述

我們可以使用 encodings.rot_13 來加密一個字元串,命令如下。

echo "I am Chris" | python -m encodings.rot_13

 

在這裡插入圖片描述

切記,不要將其用於任何真正的加密內容。因為英文有 26 個字母,所以再次運行這個演算法我們可以很容易地破譯這個加密字元

串:)

echo 'V nz Puevf' | python -m encodings.rot_13

 

在這裡插入圖片描述

現在讓我們嘗試一個更常見的場景——base64 編碼。我們可以對字元串進行 base64 編碼,如下所示。

echo "I am Chris" | python -m base64

 

在這裡插入圖片描述

接下來,我們也可以使用-d參數對加密字元串進行解碼。

echo "SSBhbSBDaHJpcwo=" | python -m base64 -d

 

base64 也經常用在對圖像文件的編碼和解碼上。我們也可以對文件進行如下編碼。
python -m base64 get_time_app/print_time.py
在這裡插入圖片描述

非常有趣的是,解碼後的 Python 腳本可以即時執行,不會報錯。。

echo "ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCgpkZWYgbWFpbigpOgogICAgY3VycmVudF90aW1lID0gZGF0ZXRpbWUubm93KCkKICAgIHByaW50KGYnQ3VycmVudCB0aW1lIGlzIHtjdXJyZW50X3RpbWV9LicpCgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQo=" | python -m base64 -d | python

 

在這裡插入圖片描述

7. 獲取系統元數據

如果我們想獲取當前的系統信息,Python 提供了一種非常簡便的方法。我們只需要運行下麵的命令即可。

python -m sysconfig

 

在這裡插入圖片描述

可以看到,這個命令執行後會顯示所有的系統配置信息,比如 Python 環境路徑和環境變數等。上面的截圖僅僅展示了一部分內

容,實際顯示的內容會非常豐富。如果我們只想展示 Python 環境路徑和當前工作路徑,我們可以執行下麵的命令。

python -m site

 

8. 文件壓縮

我們可以使用 Python 來壓縮文件,而無需下載 tar/zip/gzip 等工具。舉個例子,如果我們想壓縮我們剛剛在第 4 節中編寫的應用

程式,我們可以運行以下命令將文件夾壓縮到 zip 文件中。在命令中,選項 -c 代表的是“create”即創建的含義。

python -m zipfile -c get_time_app.zip get_time_app

 

在這裡插入圖片描述

當然,我們也可以對壓縮文件進行解壓。緊接這上面的操作,我們把文件夾解壓出來放到一個新目錄中,這樣就不會和原來的目

錄衝突了。在下麵的命令中,選項 -e 代表“extract”即解壓的含義。

python -m zipfile -e get_time_app.zip get_time_app_extracted

 

如果不放心,我們可以檢驗一下。

ls get_time_app_extractedcat get_time_app_extracted/get_time_app/print_time.py

 

在這裡插入圖片描述

我們剛剛以 zip 文件為例進行了展示,Python 除了支持 zip 格式的解壓縮以外,還支持 tar 和 gzip 的解壓縮。

總結

該篇文章中介紹了一種無需編寫任何代碼即可使用 Python 內置庫的方法。如果在某些場景下能夠想到使用這些方法,毫無疑問可

以給我們提供很多的便利。希望這篇文章能夠給大家帶來啟發和幫助。

在這裡插入圖片描述


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • BlockingQueue阻塞隊列 BlockingQueue的四組API /**BlockQueue的四組API * 1.拋出異常 * 2.有返回值,不拋出異常 * 3.阻塞等待 * 4.超時等待 */public class BlockQueueTest { public static void ...
  • 前言 大家之前用python編寫過飛機大戰的部分代碼,只能夠展示英雄飛機,背景,敵機和發射子彈,今天把背景音樂,擊毀敵機,爆 炸特效,得分等等相關功能一併加入進來,代碼有點長,三百多行,你們要的代碼來了哦? 編程思路 主要使用pygame庫,類的創建,函數的調用等等來實現,話不多說,上程式。 編程實 ...
  • 反射機制雖然說增加了代碼的複雜程度但是提高代碼的靈活性,在以後的框架的學習中,配置文件的修改大部分都是利用的反射機制。和利用反射機制去做Runtime類這下麵方法exec,進行命令執行,後面去學習一下 ...
  • 官方numpy1.16.3,scipy,onnx的whl包有問題,不要直接安裝,自己編譯。 1.1安裝Python3.7 sudo apt update #檢查可更新文件 sudo apt install software-properties-common #安裝可添加源的工具 sudo add- ...
  • fastposter v2.8.0 發佈 電商海報編輯器 fastposter海報生成器,電商海報編輯器,電商海報設計器,fast快速生成海報 海報製作 海報開發。二維碼海報,圖片海報,生成分享海報 ...
  • 1、簡介 在企業級開發中、我們經常會有編寫資料庫表結構文檔的時間付出,從業以來,待過幾家企業,關於資料庫表結構文檔狀態:要麼沒有、要麼有、但都是手寫、後期運維開發,需要手動進行維護到文檔中,很是繁瑣、如果忘記一次維護、就會給以後工作造成很多困擾、無形中製造了很多坑留給自己和後人,於是萌生了要自己寫一 ...
  • 類與對象 | C++基礎 C++語言程式設計網課 C++中支持我們使用類來定義自己的數據類型。 類的基本思想:數據抽象(data abstraction) 與 封裝(encapsulation)。 數據抽象:依賴於 介面(interface) 和 實現(implementation) 分離的編程(及 ...
  • 作者:Denny Qiao(喬喜銘),雲智慧/架構師。 雲智慧集團成立於2009年,是全棧智能業務運維解決方案服務商。經過多年自主研發,公司形成了從IT運維、電力運維到IoT運維的產業佈局,覆蓋ITOM、ITOA、ITSM、DevOps以及IoT幾大領域,為金融、政府、運營商、能源、交通、製造等上百 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...