<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 5867字,需瀏覽 12分鐘

           ·

          2022-03-16 01:29

          以下內容來自公眾號逆鋒起筆,關注每日干貨及時送達

          作者:Christopher Tao
          譯者:王坤祥@InfoQ
          原文:Eight “No-Code” Features In Python (https://towardsdatascience.com/eight-no-code-features-in-python-15744e8c01f4)


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

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

          0. Python CLI “-m”參數(shù)

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

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

          由于命令輸出的內容太長,上圖僅顯示了部分內容。這里最想強調的是-m mod參數(shù),它會將 Python 模塊以腳本的形式運行。因此,如果該模塊的實現(xiàn)支持命令行操作,我們就可以在命令行直接使用它。接下來就讓我們體驗一下:)

          1. 服務端口測試

          有時候,我們想測試 ip 端口的出站網(wǎng)絡流量,通常 telnet 命令是一個不錯的選擇。在 Windows 平臺上默認沒有安裝 telnet 軟件,使用前需要手動安裝。如果只是進行簡單的測試,未來使用場景也不多,安裝它可能是一種資源浪費。

          但是,如果安裝了 Python,那就不必下載安裝 telnet,因為 Python 內置了 telnet 對應的模塊。我們可以對 Google 搜索網(wǎng)站的 443 端口進行測試。

          python -m telnetlib -d 142.250.70.174 443

          如上圖所示,網(wǎng)絡流量顯示正常,我們甚至收到了來自 Google 空字符的響應。如果我們嘗試訪問 ip 的隨機一個端口,則會拋出錯誤,如下圖所示。

          python -m telnetlib -d 142.250.70.174 999

          2. 本地啟動 web 服務

          很多 Python 使用者不知道這一點,當?shù)谝淮温犝f后會感到驚訝。是的,我們可以使用 Python 啟動 web 服務,而無需編寫任何代碼,只需按如下方式在命令行執(zhí)行如下命令。

          python -m http.server

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

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

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

          如果你想知道更多關于這個話題的內容,可以參考3 Lines of Python Code to Write A Web Server這篇文章。如果你按照上面的文章實現(xiàn)了一個“低代碼”的解決方案,那么就可以向它添加更多的自定義功能了。

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

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

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

          可以看到,當前操作系統(tǒng)的命令行工具只能按照原字符串的原始格式進行展示。但是,如果借助 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

          現(xiàn)在,JSON 字符串具有了完美縮進的格式化輸出!更加方便閱讀。

          4. 創(chuàng)建文本編輯器

          你沒看錯,我們可以使用 Python 來”創(chuàng)建”一個文本編輯器。當然,它的功能非常有限,但是如果當前沒有更好的選擇,使用它會方便很多。另外,功能上肯定無法與 Vim 和 Nanos 相比,但是它完全是基于 UI 編輯器而不是命令行文本形式。這個編輯器由基于 Tkinter 實現(xiàn)的idlelib 模塊創(chuàng)建,所以它是可以跨平臺運行的。微信搜索readdot,關注后回復視頻教程獲取23種精品資料

          假設我們要編寫一個簡單的 Python 程序來顯示當前的時間,我想快速編寫代碼而不想下載和安裝龐大的代碼編輯工具?,F(xiàn)在讓我們運行下面這個命令。

          mkdir get_time_apppython -m idlelib get_time_app/print_time.py

          如果文件目錄不存在,idlelib將無法創(chuàng)建,因此如果必要,我們需要創(chuàng)建一個。我們運行完這個命令之后,print_time.py 只有執(zhí)行保存的情況下才會創(chuàng)建到本地。現(xiàn)在應該會彈出編輯器,我們可以在里面寫一些代碼, 可以看到代碼是支持語法高亮的。

          現(xiàn)在我們使用ctrl+s快捷鍵對編輯好的代碼進行保存,并關閉編輯窗口。接下來使用命令行查看一下編輯好的代碼文件進行驗證,沒有任何問題。

          cat get_time_app/print_time.py

          5. 創(chuàng)建可執(zhí)行應用程序

          如果我們想要創(chuàng)建一個簡單的應用,比如前面寫的獲取當前時間的應用程序,我們不必再需要像 PyInstaller 這樣的第三方工具包,Python 內置的 Zipapp 就可以做到。假設我們要打包成一個"Get Time"的應用,我們可以在命令行運行下面的命令。

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

          在該命令中,我們只需要給 zipapp設置get_time_app名稱,指定 Python 程序的入口文件及其程序入口函數(shù)即可。以.pyz為擴展名的文件就是我們創(chuàng)建的應用程序,至此我們就可以將項目作為單個文件而不是文件夾進行分發(fā)。

          該程序的啟動方式也很簡單,直接使用 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

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

          echo "I am Chris" | python -m base64

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

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

          base64 也經(jīng)常用在對圖像文件的編碼和解碼上。我們也可以對文件進行如下編碼。

          python -m base64 get_time_app/print_time.py  

          非常有趣的是,解碼后的 Python 腳本可以即時執(zhí)行,不會報錯。。

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

          7. 獲取系統(tǒng)元數(shù)據(jù)

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

          python -m sysconfig

          可以看到,這個命令執(zhí)行后會顯示所有的系統(tǒng)配置信息,比如 Python 環(huán)境路徑和環(huán)境變量等。上面的截圖僅僅展示了一部分內容,實際顯示的內容會非常豐富。如果我們只想展示 Python 環(huán)境路徑和當前工作路徑,我們可以執(zhí)行下面的命令。

          python -m site

          8. 文件壓縮

          我們可以使用 Python 來壓縮文件,而無需下載 tar/zip/gzip 等工具。舉個例子,如果我們想壓縮我們剛剛在第 4 節(jié)中編寫的應用程序,我們可以運行以下命令將文件夾壓縮到 zip 文件中。在命令中,選項 -c 代表的是“create”即創(chuàng)建的含義。

          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 內置庫的方法。如果在某些場景下能夠想到使用這些方法,毫無疑問可以給我們提供很多的便利。希望這篇文章能夠給大家?guī)韱l(fā)和幫助。

          將鴻蒙上的 Python 進行到底!

          又一本 Python 可視化好書來了!

          一些日常使用的 Python 技巧分享

          Python 爬蟲,看這幾本書就夠了!

          五大自動化測試 Python 框架

          瀏覽 34
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产91后入 | 丁香五月激情视频 | 日本一级片免费看 | 免费成人视频久久 | 精品国产制服丝袜高跟 |