八個 Python 庫,再也不需要自己編寫腳本了
你是否是那種‘不造輪子不舒服’的開發者——需要什么功能?現成的庫?不存在的,自己擼代碼!JSON 轉 CSV?命令行儀表盤?‘給我 30 分鐘,Vim 里徒手搞定!’
而真正的效率不是能寫多少代碼,而是知道什么時候不該寫代碼。
就拿最近我最常使用的 Rich 來舉例,它只用 3 行代碼 就能解決了你過去熬夜調試的終端渲染問題:
- 日志/調試輸出 自動變成帶語法高亮的可折疊面板(再也不用 print(json.dumps()) 瞎眼了)
- 表格數據 從歪歪扭扭的 ┐└─ 符號地獄變成自動對齊+分頁的印刷級顯示
- 進度條 自帶速度預估、動態寬度調整,甚至支持多任務并行——而我曾經花半天時間寫出來的版本,連基本的中斷恢復都搞不定
Rich 和其他 7 個庫(見下文)教會我們一件事:用別人的輪子不是偷懶,而是把時間投資在真正創造價值的地方。
如果你也厭倦了重復解決已被完美解決的問題,是時候升級你的工具箱了。
1. Rich — CLI ≠ 丑陋
還記得以前命令行輸出看起來像 Windows 95 那樣的樣式嗎?Rich 可以解決這個問題——而且是樣式化的。
只需一次導入,即可讓終端輸出看起來像在 Figma 中設計的那樣。表格、Markdown 渲染、語法高亮的回溯、毫無壓力的進度條……簡直讓人欲罷不能。
from rich.console import Console
console = Console()
console.print("Hello, [bold magenta]world[/bold magenta]!")- 用途:不會讓你眼花繚亂的日志。??
- 提示:rich.traceback.install()用華麗、上下文豐富的回溯替換丑陋的 Python 回溯 - 無需額外工作。
2. Typer — 構建優質 CLI 的最快方法
不再使用argparse……,我推薦使用 Typer。
Typer 基于 Click 構建,使用函數簽名和類型提示構建命令行界面 (CLI) 變得非常簡單。只需添加文檔字符串,基本上就能編寫幫助命令了。
import typer
def main(name: str):
typer.echo(f"Hello {name}")
if __name__ == "__main__":
typer.run(main)- 用途:在 5 分鐘內創建完善的 CLI 工具。
- Typer提示 = 更好的自動完成和文檔 = 更少的--help time。
3. Pendulum — datetime會背刺你
有沒有試過在 Python 中對兩個日期時間進行減法運算,結果卻……很奇怪?沒錯,就是這種感覺。 Pendulum 就是這樣一款可直接替代 datetime 的軟件,它能像成年人一樣處理時區、格式化、持續時間和運算。
import pendulum
dt = pendulum.now("UTC").add(days=3)
print(dt.to_datetime_string())- 用途:調度腳本、操控時區或應對夏令時。
- Pendulum 可以在多種語言環境中解析人類可讀的時間字符串,例如“下周四下午 5 點”。
4. Pydantic — 無需繁瑣的強類型
我以前都是手動驗證 JSON 的。(別評判。)后來我發現了 Pydantic。定義一個帶類型提示的類,然后就搞定了——驗證、記錄、解析。
推薦閱讀:墻裂推薦一個 Python 神庫--Pydantic
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
is_active: bool = True- 用途:驗證 API 響應、配置和輸入數據。
- 注意:它之所以成為 FastAPI 的支柱,是有原因的。但即使在 Web 世界之外?它仍然是一個顛覆性的力量。
5. Faker——真實數據混亂且可能違法
無論你是在模擬 API、播種開發數據庫,還是僅僅試圖生成令人信服的虛假用戶資料(希望不是出于不可告人的原因),Faker 都能滿足你的需求。
推薦閱讀:推薦七個 Python 效率工具
from faker import Faker
fake = Faker()
print(fake.name(), fake.email(), fake.address())- 用途:創建個性化的虛擬數據。??
- 試試生成海盜名字。相信我。
6. Tqdm — 為不耐煩的人設計的進度條
你可能之前見過這個。但如果你不經常用它,我們得聊聊。
Tqdm 可以包裝任何可迭代對象,并顯示智能且響應迅速的進度條。非常適合循環、下載或監控大型作業,避免程序靜默卡頓。
推薦閱讀:Python制作進度條,原來有這么多方法!
from tqdm import tqdm
for i in tqdm(range(10000)):
pass- 用于:所有耗時超過 0.5 秒的事情。
- 提示:幫助你盡早捕獲無限循環。
7. Requests-HTML — 輕松抓取網頁
我喜歡requests。我可以忍受BeautifulSoup。但是requests-html?
它結合了請求的簡潔性和無頭瀏覽器的解析能力。它還能執行 JavaScript!這意味著你終于可以安心地抓取現代網頁了。
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://example.com')
r.html.render()
print(r.html.find('h1')[0].text)- 用途:抓取討厭傳統解析器的網站。
- 它底層使用了 Pyppeteer。使用 Python 進行 JS 渲染——無需擔心 Selenium 帶來的困擾。
8. Loguru — 輕松記錄日志
Python 默認的日志記錄功能……冗長,而且不直觀。Loguru 的出現,讓日志記錄看起來就像在寫日記一樣——只不過它有日志級別、文件輪換和彩色輸出。
推薦閱讀:強強聯手!Loguru 和 Pydantic 設置 Python 日志
from loguru import logger
logger.add("debug.log", rotation="1 MB")
logger.info("Processing started...")- 用途:調試、生產日志和更好的睡眠。
- 一行代碼即可替換低級的print() 和配置完整的日志系統。
































