python的所有库_Python 常用库
前言
之前重寫了視頻字符畫處理的代碼,然后這兩天又在研究命令行和網絡。讀了一點開源工具的代碼,越來越覺得有必要針對性地學習一下一些重要的基礎庫。
這里呢就列個小清單,把我認為有必要學習的庫寫一下。
帶 [ x ] 的表示已完成
時間
time:對 c 語言庫的封裝,優點是速度快。
常用的函數:時間戳 - time.time(),睡眠 - time.sleep()
datetime:時間日期處理庫,比 time 更強大,支持在日期上進行各種操作(加減乘除)。
maya/arrow: 第三方時間日期處理庫,比 datetime 更好用。
系統
用于訪問一些由 Python Interpreter 維護的變量,一般都和系統、流、命令行參數之類的相關。
用于使用一些操作系統相關的函數,還有操作系統環境變量。(相關:比如 os.fork 在 windows 上就用不了)
系統調用函數,目的在于取代 os.system 和 os.spwan* 的庫,并提供更強大的功能。
是 fabric2 的本地方法調用模塊,比 subprocess 更強大。
SSH 遠程執行命令
Python 的 SSHv2 協議實現。使用 Python 遠程執行命令的首選庫。
構建在 paramiko 和 pyinvoke 之上,提供更方便的遠程命令執行功能。(運維用)
文件路徑
該模塊使用類來表示系統路徑,而且是操作系統無關的。終于不需要去管 Windows 和 Linux 下分隔符的差別了。
更方便的是,路徑之間的組合可以直接通過“計算”實現。(它還提供了 glob 簡化正則表達式,用于路徑匹配)
這是一個上下文管理庫,可用于自定義能使用 with 上下文管理的類。常用于 網絡、數據庫連接之類的地方。
字符串處理
[ x ] re
正則,不解釋
提供了一個 str 流對象,可讀可寫。API 等同于 open() 返回的流對象。類似 Java 的 StringBuffer BytesBuffer
網絡庫(客戶端)
[ x ] requests: 3rd
超易用的 http 請求庫
網絡協議處理的標準庫(說網絡協議,自然不僅 http 了)
Web 應用框架(服務端)
[ x ] flask: 3rd
輕量的 web 應用框架(服務端),用來寫 RESTful API 特別方便。
依賴管理、環境隔離
環境管理和依賴管理的終極解決方案,缺點是 lock 慢到吐血。
[x] poetry: 比 pipenv 更好用!
[ x ] pip
依賴管理工具,install uninstall list 都不會用還敢叫 Python 程序員?
項目打包工具,配置項還挺多的,需要用的時候再查文檔吧。。
Python 的依賴管理工具,曾經很混亂。不過現在算是越做越好了。更多的信息參見Python Packaging User Guide
迭代器、數據結構、高階函數
日志(入門簡單,深入有點難。。)
比 logging 更好用,而且支持彩色日志輸出。
測試(有待提高)
官方測試框架,師出 Junit。缺點是繁瑣。
[ x ] pytest: 3rd
看到很多熱門開源項目都用的 pytest,有時間得學一下。
使用最多的替換掉網絡請求的方式,幾乎所有場景下都可以用。所有網絡請求和 rpc 調用等都可以用 mock.patch 來模擬返回值。
就像用Java的Mockito一樣。
數據轉換
a. 持久化(這個很簡單)
一個對數據進行 object 和 bytes 之間的轉化的模塊。如果你只需要使用 Python 讀取這些數據,用 pickle 會是個很好的選擇。
[ x ] json
和 pickle 很類似,不過它做的是 object 和 json 之間的轉化。
這個模塊在網絡開發中用得很多。
b. 數據庫(已搞定)
如果需要保存數據,而且需要對其做更復雜的操作,就需要用到數據庫了。
[ x ] sqlite3: Python 自帶的文件數據庫,用于學習很方便。而且 python 數據庫驅動都遵循同一個 dbapi 標準,學會一個就學會了所有。
[ x ] PyMySQL: 3rd MySQL 的第三方連接庫,遵循 dbapi 標準。
[ x ] SQLAlchemy:ORM 框架,而且有數據庫連接池和詳細的日志系統。
c. 結構化二進制
執行 Python 對象與 C struct (bytes) 之間的轉換,一般用于解析或構建下列數據:
1. 網絡協議中的報文:IP包、TCP/UDP 包
2. 音樂、視頻文件:wav/mp3/mp4/midi 等
并發并行
多進程,由于 GIL 的存在,計算密集型工作用多線程基本沒用,這時就需要這個庫,或者用 C API.
另外因為多進程不共享數據,因此需要使用 Queue 或者 Pipe 通信。
API 和 multiprocessing 非常類似,但是要搞清楚關鍵區別:一個是進程一個是線程。
[ x ] concurrent.futures
線程池/進程池,而且提供更高層的抽象。
進階:線程池、數據庫連接池、消息隊列
異步I/O(適用于網絡編程)
協程相當于輕量級線程,特別適用于I/O密集場景。
任務調度
我有個個人項目,需要每天定時發送消息。我最初是直接加了個線程來干這個事。。然后我發現了,原來有 scheduler 這個東西。。
apscheduler:支持 asyncio 的 scheduler
其他(偏向特定領域了,非必要)
1. 數據分析/機器學習
numpy
pandas
matplotlib
2. 和 C 語言通信
和C語言通信一般有兩個用途,一是做性能優化,二是用于調用一些不開源的庫。
cffi: 3rd 不需要先行編譯,可直接在Python里寫C代碼。而且簡單干凈。
cython: 3rd 使用特殊語法,可同時調用 C 和 Python。需要性能,就用這個。
P.S. a. 為啥不說 ctypes: 因為感覺 api 太丑。用 Python 就圖個樂子,所以拒。b. C 拓展:考慮到最近很多人都說 PyPy 是未來,很多項目也明確表示支持 PyPy,C拓展方式還是盡量避免。這樣以后移植也方便。c. 各方法優缺點分析
總結
以上是生活随笔為你收集整理的python的所有库_Python 常用库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 接口自动化_Python
- 下一篇: python qt信号在qml 的使用_