<table id="qs2qo"></table>
  • <bdo id="qs2qo"><center id="qs2qo"></center></bdo>
    • 自動秒收錄
    • 軟件:1973
    • 資訊:56215|
    • 收錄網站:181184|

    IT精英團

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

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

    瀏覽次數:
    評論次數:
    編輯: 溫瑜
    信息來源: ITPUB
    更新日期: 2022-04-20 21:20:42
    摘要

    注:在命令行中使用Python時,“-m”選項參數可以實現非常強大的功能??梢哉f,善用“-m”參數,這是一個優秀的Python技術人的必備技能。曾發過一篇文章《Python中-m的典型用

    • 正文開始
    • 相關閱讀
    • 推薦作品

    注意:在命令行中使用Python時,“-m”選項參數可以實現非常強大的功能??梢哉f,用好“-m”參數是一個優秀Python技術人員的必備技能。我曾經發表過一篇文章《Python 中 -m 的典型用法、原理解析與發展演變》,介紹了它的實現原理和發展演變的歷史過程。推薦閱讀。今天分享的文章介紹了8種非常實用的小功能,希望能幫到你!

    Python語言這幾年之所以流行,是因為我們可以用它寫更少的代碼來實現復雜的功能。Python開發人員歡迎封裝復雜實現但用戶友好的工具包。

    然而,Python的簡單還不止于此。你能相信我們不用寫任何代碼就能使用Python嗎?在下一篇文章中,我們將介紹8個不用寫任何代碼就能使用Python內置函數的例子。

    00-1010先說Python CLI(命令行界面)。雖然我們不用寫代碼來使用后面介紹的函數,但是為了讓Python知道我們要執行什么,我們需要使用Python命令行來操作。

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

    因為命令輸出的內容太長,上圖只顯示了一部分。這里我要強調的是-m mod參數,它會以腳本的形式運行Python模塊。所以,如果這個模塊的實現支持命令行操作,我們可以直接在命令行使用。接下來我們來體驗一下3360)

    00-1010有時,我們要測試ip端口的出站網絡流量。通常,telnet命令是一個不錯的選擇。Windows平臺默認不安裝Telnet軟件,使用前需要手動安裝。如果只進行簡單測試,未來使用場景不多,安裝可能會浪費資源。

    但是如果安裝了Python,就不需要下載安裝telnet了,因為Python內置了對應telnet的模塊。我們可以測試一下Google搜索網站的443端口。

    python-mtelnetlib-d 142 . 250 . 70 . 174443

    如上圖所示,網絡流量正常,我們甚至收到了Google的空字符響應。如果我們試圖訪問ip的一個隨機端口,我們將拋出一個錯誤,如下圖所示。

    python-mtelnetlib-d 142 . 250 . 70 . 174999

    00-1010很多Python用戶并不知道這一點,第一次聽說的時候會很驚訝。是的,我們可以使用Python來啟動web服務,而無需編寫任何代碼,只需在命令行中執行以下命令,如下所示。

    python-mhttp.server

    C47F304372BF88460CB00D2CB9C4.jpg">

    運行后,顯示該服務監聽了本地的 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 程序來顯示當前的時間,我想快速編寫代碼而不想下載和安裝龐大的代碼編輯工具?,F在讓我們運行下面這個命令。

    mkdir get_time_apppython -m idlelib get_time_app/print_time.py

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

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

    Linux基礎總結 這個就夠了!
    ? 上一篇 2022-04-20
    Kubernetes網絡模型基本指南
    下一篇 ? 2022-04-20
    • 胡迪核心知識點詳解(好文章合集)
      1閱讀 0條評論 個贊
      以下文章來源于公眾號-3分鐘秒懂大數據,作者在IT中穿梭旅行在Flink實時流中,經常會通過FlinkCDC插件讀取Mysql數據,然后寫入Hudi中。所以在執行上述操作時,需要了解……
    • 前端面試必須解決網絡中的跨域問題
      0閱讀 0條評論 個贊
      什么是跨域瀏覽器有一個重要的安全策略,稱之為「同源策略」其中,源=協議+主機+端口源=協議+主機+端口源=協議+主機+端口,兩個源相同,稱之為同源,兩個源不同,稱之為跨源或跨域比如:源1源2是否同……
    • 如何在Bash腳本中使用強大的Linux測試命令
      0閱讀 0條評論 個贊
      Linuxtest命令是Shell內置命令,用來檢測某個條件是否成立。test通常和if語句一起使用,并且大部分if語句都依賴test??梢詫⒁粋€元素與另一個元素進行比較,但它更?!?/div>
    • 真正的建筑設計是什么樣子的?
      1閱讀 0條評論 個贊
      什么是架構和架構本質在軟件行業,對于什么是架構,都有很多的爭論,每個人都有自己的理解。此君說的架構和彼君理解的架構未必是一回事。因此我們在討論架構之前,我們先討論架構的概念定義,概念是人認識這個世界的……
    • 10分鐘了解云原生 值得收藏~
      0閱讀 0條評論 個贊
      文章轉載:奇妙的Linux世界我們已經進入云計算下半場,不再像上半場在糾結要不要上云,而是討論怎么上云?才能把云計算的價值發揮到淋漓盡致。如何把云計算與不同的業務場景深度結合?如何讓技術真正作用于企業……
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    • 如何正確計算Kubernetes容器的CPU利用率
      1閱讀 0條評論 個贊
      本文轉自博客園,原文:https://www.cnblogs.com/apink/p/15767687.html,版權歸原作者所有。參數解釋使用Prometheus配置kubernetes環境……
    • 用Ansible實現MySQL的備份、操作和維護
      0閱讀 0條評論 個贊
      作者簡介曹杰,中國結算上海分公司高級經理,從事系統運維管理工作。本文以容器形式部署了開源自動化運維工具Ansible,基于自帶的MySQL管理模塊編排了playbook配置文件,最終實現M……
    • 系統數據治理的思考與實踐
      2閱讀 0條評論 個贊
      美團住宿數據治理團隊從事數據治理工作多年,從最初的被動、單點治理,發展到后來的主動、專項治理,再發展到現在的體系化、自動化治理。一路走來,他們不斷進行積累和沉淀,也在持續思考與實踐。目前該團隊取得了一……
    • 管理數百個Kubernetes集群需要什么?
      0閱讀 0條評論 個贊
      文章轉載:進擊云原生(版權歸原作者所有,侵刪)要點:部署一個具備生產就緒所需所有依賴關系的Kubernetes集群需要數天時間。如果不自動化這個過程,管理Kubernetes集群的浮動是非常困難的。在……
    • 如何讓Kubernetes集群優雅地使用GPU節點
      2閱讀 0條評論 個贊
      如何讓你的Kubernetes集群使用GPU節點CUDA驅動程序如果您還沒有這樣做,請確保您已在GPU節點上安裝了NVIDIACUDA驅動程序。CUDA是來自nvidia的并行計算平臺。ht……
    • 7 種提升Spring Boot吞吐量神技!
      0閱讀 0條評論 個贊
      一、異步執行實現方式二種:1.使用異步注解@aysnc、啟動類:添加@EnableAsync注解2.JDK8本身有一個非常好用的Future類——CompletableFuture@AllArg……
    • 一行Python代碼實現并行
      1閱讀 0條評論 個贊
      譯者:caspar譯文:http://985.so/amks原文:http://985.so/amk5Python在程序并行化方面多少有些聲名狼藉。撇開技術上的問題,例如線程的實現和GIL,我……
    • 運維常用的34個Linux Shell腳本 對你一定有幫助!
      1閱讀 0條評論 個贊
      作為一名Linux工程師,會寫好的腳本不僅能提高工作效率,還能有更多的時間做自己的事。最近在網上沖浪的時候,也注意收集一些大佬寫過的腳本,匯總整理一下,歡迎收藏,與君共勉?。?)用戶猜數字#!/b……
    • 基礎鞏固——至少需要多少行代碼才能實現深度復制?
      1閱讀 0條評論 個贊
      前言深度克?。ㄉ羁截悾┮恢倍际浅?、中級前端面試中經常被問到的題目,網上介紹的實現方式也都各有千秋,大體可以概括為三種方式:JSON.stringify+JSON.parse,這個很好理解;全量判斷類……
    • 碼頭工人搭建彈性搜索集群教程
      1閱讀 0條評論 個贊
      寫在前面:為什么要用ElasticSearch?我們的應用經常需要添加檢索功能,開源的ElasticSearch是目前全文檢索引擎的首選。它可以快速的存儲、搜索和分析海量數據。ElasticSear……
    • 關于數據中心最強科普 一個就給你完整了解!
      1閱讀 0條評論 個贊
      數據中心,英文縮寫叫IDC,也就是InternetDataCenter(互聯網數據中心)。之所以不太直接稱之為“DC”,主要是為了避免和直流電(DirectCurrent)混淆。而且,現在的數……
    • 服務器端高并發分布式架構的演進之路
      1閱讀 0條評論 個贊
      1.概述本文以淘寶作為例子,介紹從一百個到千萬級并發情況下服務端的架構的演進過程。同時列舉出每個演進階段會遇到的相關技術,讓大家對架構的演進有一個整體的認知。文章最后匯總了一些架構設計的原則。特別說……
    • 1972年的C語言 控制了Windows、Linux、macOS等操作系統的半邊天
      1閱讀 0條評論 個贊
      來源|CSDN(ID:CSDNnews)誕生于1972年的C語言已經50歲了,目前來看,它還像20歲的小伙一樣活力四射,似乎永不會退休,并且正在賦能全世界重量級應用系統的運行。盡管C語言面世多年,……
    • MySQL的行格式是什么?
      1閱讀 0條評論 個贊
      行格式(rowformat)決定了我們插入的一行數據,是如何存儲在數據庫中的,MySQL有4種行格式,分別是REDUNDANT,COMPACT,DYNAMIC,COMPRESSED。不同行格式區別:……
    • 做SQL性能優化真的是干瞪眼
      1閱讀 0條評論 個贊
      很多大數據計算都是用SQL實現的,跑得慢時就要去優化SQL,但常常碰到讓人干瞪眼的情況。比如,存儲過程中有三條大概形如這樣的語句執行得很慢:selecta,b,sum(x)fromTgr……
    • 高并發服務的幾點優化經驗
      1閱讀 0條評論 個贊
      前言:如何優化高并發服務,這里指的是qps在20萬以上的在線服務,注意不是離線服務,在線服務會存在哪些挑戰呢?①無法做離線緩存,所有的數據都是實時讀的②大量的請求會打到線上服務,對于服務的響應時間要……
    • Redis過期的數據會被立即刪除嗎?
      1閱讀 0條評論 個贊
      本文來源碼哥字節(ID:MageByte)?碼哥,當key達到過期時間,Redis就會馬上刪除么?先說結論:并不會立馬刪除。Redis有兩種刪除過期數據的策略:定期選取部分數據刪除;惰性刪除;……
    • Python極簡編碼規范
      1閱讀 0條評論 個贊
      本文是閱讀《PythonCodingRule》之后總結的最為精華及簡單的編碼規范,根據每個人不同喜好有些地方會有不同的選擇,我只是做了對自己來說最簡單易行的選擇,僅供大家參考。1、重要原則a.保持……
    • 數據倉庫實踐:總線矩陣體系結構的設計
      1閱讀 0條評論 個贊
      以下文章來源于公眾號-云祁的數據江湖,作者云祁如何設計一套切實可行的數據倉庫呢?我們要明白,對于數據倉庫的設計是不能完全依賴于業務的需求,但往往又必須要服務于業務的價值。因此,在構建數據倉庫前,我們……
    • 一天一技能:協調與多流程的完美結合
      7閱讀 0條評論 個贊
      我們知道,協程本質上是單線程單進程,通過充分利用IO等待時間來實現高并發。在IO等待時間之外的代碼,還是串行運行的。因此,如果協程非常多,多少每個協程內部的串行代碼運行時間超過了IO請求的等待時間,那……
    最近發布資訊
    更多
    本地特级毛片,老师脱裙子让我看内裤,人妻av乱片aV出轨avApp
    <table id="qs2qo"></table>
  • <bdo id="qs2qo"><center id="qs2qo"></center></bdo>
  • <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>