八個無需編寫程式碼即可使用 Python 內建程式庫的方法

王林
發布: 2023-04-12 10:55:07
轉載
1335 人瀏覽過

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

近年來 Python 語言之所以流行,是因為我們可以用它來寫更少的程式碼來實現複雜的功能。 Python 開發者社群非常歡迎那些封裝了複雜實作但是對使用者十分友善的工具包。

然而,Python 的簡單性不只如此。你能相信我們可以在不寫任何程式碼的情況下使用 Python 嗎?在接下來的文章中,我將介紹 8 個無需編寫任何程式碼即可使用 Python 內建功能的範例。

1. Python CLI “-m”參數

我們先從 Python CLI(命令列介面)開始談起。雖然我們不必編寫程式碼來使用稍後介紹的功能,但為了讓 Python 知道我們要執行的內容,我們需要使用 Python 命令列來進行操作。

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

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

由於指令輸出的內容太長,上圖只顯示了部分內容。這裡最想強調的是-m mod參數,它會將 Python 模組以腳本的形式運作。因此,如果該模組的實作支援命令列操作,我們就可以在命令列直接使用它。接下來就讓我們體驗一下:)

2. 服務埠測試

有時候,我們想測試 ip 連接埠的出站網路流量,通常 telnet 指令是一個不錯的選擇。在 Windows 平台上預設沒有安裝 telnet 軟體,使用前需手動安裝。如果只是進行簡單的測試,未來使用場景也不多,安裝它可能是一種資源浪費。

但是,如果安裝了 Python,那就不必下載安裝 telnet,因為 Python 內建了 telnet 對應的模組。我們可以對 Google 搜尋網站的 443 連接埠進行測試。

python -m telnetlib -d 142.250.70.174 443
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

如上圖所示,網路流量顯示正常,我們甚至收到了來自 Google 空字元的回應。如果我們嘗試存取 ip 的隨機一個端口,則會拋出錯誤,如下圖所示。

python -m telnetlib -d 142.250.70.174 999
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

3. 本機啟動 web 服務

很多 Python 使用者不知道這一點,當第一次聽到後會感到驚訝。是的,我們可以使用 Python 啟動 web 服務,而無需編寫任何程式碼,只需如下在命令列執行以下命令即可。

python -m http.server
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

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

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

該 web 服務會以根目錄的形式展示在命令啟動路徑下的本機檔案系統,換句話說,我們無法存取它的父級目錄。

你可能會問,這個功能的使用場景是什麼。舉一個例子,如果你想跟你的好夥伴們分享你電腦某個目錄下的許多文字/PDF/圖像檔案/子目錄檔案等,那麼使用這個方法就可以非常輕鬆地進行共享了。

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

如果你想知道更多關於這個主題的內容,可以參考3 Lines of Python Code to Write A Web Server這篇文章。如果你按照上面的文章實作了一個「低程式碼」的解決方案,那麼就可以為它添加更多的自訂功能了。

4. 驗證及格式化 JSON 字串

如果你有一個非常長且未經格式化的 JSON 字串,那麼閱讀起來會非常困難。通常,我會使用一些帶有 JSON 插件的文字編輯器,例如 Sublime 或 VS Code,來格式化 JSON 字串。但是,如果手邊沒有這些工具,Python 可以臨時一用。例如下面會以這個簡短的 JSON 字串進行展示。

echo '{"name": {"first_name":"Chris", "last_name":"Tao"} "age":33}'
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

#

可以看到,当前操作系统的命令行工具只能按照原字符串的原始格式进行展示。但是,如果借助 Python 的 json.tool工具,JSON 字符串就会被很好的格式化。

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

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

Oops!JSON 字符串无效,并且 json.tool 帮助我们定位了问题。我们在名称对象后面漏掉了一个逗号。所以添加逗号以使该 JSON 合法有效。

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

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

现在,JSON 字符串具有了完美缩进的格式化输出!更加方便阅读。

5. 创建文本编辑器

你没看错,我们可以使用 Python 来”创建”一个文本编辑器。当然,它的功能非常有限,但是如果当前没有更好的选择,使用它会方便很多。另外,功能上肯定无法与 Vim 和 Nanos 相比,但是它完全是基于 UI 编辑器而不是命令行文本形式。这个编辑器由基于 Tkinter 实现的idlelib 模块创建,所以它是可以跨平台运行的。

假设我们要编写一个简单的 Python 程序来显示当前的时间,我想快速编写代码而不想下载和安装庞大的代码编辑工具。现在让我们运行下面这个命令。

mkdir get_time_apppython -m idlelib get_time_app/print_time.py
登入後複製

如果文件目录不存在,idlelib将无法创建,因此如果必要,我们需要创建一个。我们运行完这个命令之后,print_time.py 只有执行保存的情况下才会创建到本地。现在应该会弹出编辑器,我们可以在里面写一些代码, 可以看到代码是支持语法高亮的。

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

现在我们使用ctrl+s快捷键对编辑好的代码进行保存,并关闭编辑窗口。接下来使用命令行查看一下编辑好的代码文件进行验证,没有任何问题。

cat get_time_app/print_time.py
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

6. 创建可执行应用程序

如果我们想要创建一个简单的应用,比如前面写的获取当前时间的应用程序,我们不必再需要像 PyInstaller 这样的第三方工具包,Python 内置的 Zipapp 就可以做到。假设我们要打包成一个"Get Time"的应用,我们可以在命令行运行下面的命令。

python -m zipapp get_time_app -m "print_time:main"
登入後複製

在该命令中,我们只需要给 zipapp设置get_time_app名称,指定 Python 程序的入口文件及其程序入口函数即可。以.pyz为扩展名的文件就是我们创建的应用程序,至此我们就可以将项目作为单个文件而不是文件夹进行分发。

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

该程序的启动方式也很简单,直接使用 Python 进行调用即可。

python get_time_app.pyz
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

7. 编码和解码字符串或文件

通过 Python CLI,我们可以加密字符串或文件。我们以有趣的 ROT13 加密算法为例进行展示。ROT13 是一种偏移 13 位的凯撒密码,它的加密原理如下图所示。

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

我们可以使用 encodings.rot_13 来加密一个字符串,命令如下。

echo "I am Chris" | python -m encodings.rot_13
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

切记,不要将其用于任何真正的加密内容。因为英文有 26 个字母,所以再次运行这个算法我们可以很容易地破译这个加密字符串:)

echo 'V nz Puevf' | python -m encodings.rot_13
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

现在让我们尝试一个更常见的场景——base64 编码。我们可以对字符串进行 base64 编码,如下所示。

echo "I am Chris" | python -m base64
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

接下来,我们也可以使用-d参数对加密字符串进行解码。

echo "SSBhbSBDaHJpcwo=" | python -m base64 -d
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

base64 也经常用在对图像文件的编码和解码上。我们也可以对文件进行如下编码。

python -m base64 get_time_app/print_time.py
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

非常有趣的是,解码后的 Python 脚本可以即时执行,不会报错。。

echo "ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCgpkZWYgbWFpbigpOgogICAgY3VycmVudF90aW1lID0gZGF0ZXRpbWUubm93KCkKICAgIHByaW50KGYnQ3VycmVudCB0aW1lIGlzIHtjdXJyZW50X3RpbWV9LicpCgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQo=" | python -m base64 -d | python
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

8. 获取系统元数据

如果我们想获取当前的系统信息,Python 提供了一种非常简便的方法。我们只需要运行下面的命令即可。

python -m sysconfig
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

可以看到,这个命令执行后会显示所有的系统配置信息,比如 Python 环境路径和环境变量等。上面的截图仅仅展示了一部分内容,实际显示的内容会非常丰富。如果我们只想展示 Python 环境路径和当前工作路径,我们可以执行下面的命令。

python -m site
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

9. 文件压缩

我们可以使用 Python 来压缩文件,而无需下载 tar/zip/gzip 等工具。举个例子,如果我们想压缩我们刚刚在第 4 节中编写的应用程序,我们可以运行以下命令将文件夹压缩到 zip 文件中。在命令中,选项 -c 代表的是“create”即创建的含义。

python -m zipfile -c get_time_app.zip get_time_app
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

当然,我们也可以对压缩文件进行解压。紧接这上面的操作,我们把文件夹解压出来放到一个新目录中,这样就不会和原来的目录冲突了。在下面的命令中,选项 -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
登入後複製

八個無需編寫程式碼即可使用 Python 內建程式庫的方法

我们刚刚以 zip 文件为例进行了展示,Python 除了支持 zip 格式的解压缩以外,还支持 tar 和 gzip 的解压缩。

总结

该篇文章中介绍了一种无需编写任何代码即可使用 Python 内置库的方法。如果在某些场景下能够想到使用这些方法,毫无疑问可以给我们提供很多的便利。希望这篇文章能够给大家带来启发和帮助。

以上是八個無需編寫程式碼即可使用 Python 內建程式庫的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板