成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 的八個實用的“無代碼”特性

開發
該篇文章中介紹了一種無需編寫任何代碼即可使用 Python 內置庫的方法。如果在某些場景下能夠想到使用這些方法,毫無疑問可以給我們提供很多的便利。

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

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

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 -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. 驗證及格式化 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 內置庫的方法。如果在某些場景下能夠想到使用這些方法,毫無疑問可以給我們提供很多的便利。希望這篇文章能夠給大家帶來啟發和幫助。

責任編輯:趙寧寧 來源: Python貓
相關推薦

2024-03-27 14:06:58

Python代碼開發

2025-02-21 08:30:00

JavaScripES代碼

2024-08-27 12:18:23

函數Python

2022-12-01 16:53:27

NPM技巧

2022-07-25 15:21:50

Java編程語言開發

2011-02-25 10:00:04

Windows 8

2025-01-08 08:53:05

2022-12-16 17:01:15

Web API開發

2024-12-27 08:43:17

2022-06-05 23:47:06

開發無代碼低代碼

2024-03-08 08:00:00

Python開發裝飾器

2017-01-05 09:59:45

2012-10-29 11:01:17

2017-04-20 12:51:28

2023-09-26 12:04:15

重構技巧Pythonic

2023-01-11 11:35:40

重構PythonPythonic

2021-12-11 23:13:16

Python語言技巧

2022-08-11 09:00:31

Audio APIWeb

2025-04-03 08:27:00

Python代碼開發

2011-01-13 15:37:25

vSphere備份
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久一区二区三区 | 国产四区 | 粉嫩一区二区三区国产精品 | 成人a在线| 91在线电影 | 国产精品久久久久久久久久久久午夜片 | 美国av毛片 | 激情网站在线 | 国产精品久久久久久久久久久久午夜片 | 亚洲欧美日韩在线一区二区 | 日韩一区二区在线免费观看 | 国产日韩欧美 | 欧美日韩在线一区二区三区 | 福利视频1000 | www日本在线观看 | 欧美一区二区三区四区视频 | 国产成人影院 | 盗摄精品av一区二区三区 | 欧美日韩成人网 | 午夜av一区二区 | 国产日产精品一区二区三区四区 | 精品一区国产 | 国产精品视频999 | 亚洲精品久久国产高清情趣图文 | 2020天天操| 久久久久国产一区二区三区四区 | 韩日av在线 | 中文字幕亚洲欧美 | 中文字幕在线剧情 | 天天躁日日躁狠狠躁白人 | 伊人超碰 | 精品亚洲二区 | 天天艹逼网 | 国产亚洲精品精品国产亚洲综合 | 成人免费一区二区三区牛牛 | 久久亚洲欧美日韩精品专区 | 一级黄色绿像片 | 国产成人一区二区 | 午夜精品久久久久久久 | 精品视频在线免费观看 | 99re视频这里只有精品 |