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