值得收藏的 8 个 Python 库

快猫运营团队 2025-07-09 08:55:00

坦率地说:我曾经是那个坚持从零开始写每个东西的人。需要 JSON 到 CSV 转换器?“别担心,我来搞定”;想要一个快捷的命令行仪表板?“请给我 30 分钟 + Vim!”

但随着时间的推移,我意识到,虽然编写原始 Python 代码有益于身心健康(是的,的确可以提升自我),但它通常不是最明智的举动——尤其是当其他人已经写了 lib,在 lib 里完成了繁重的工作,测试了边界情况,并将其包装在一个干净的 API 中时。

所以今天,我分解了 8 个非常好的 Python 库,它们基本上使我的自定义脚本过时了。这些不仅受欢迎 — 它们实用、设计简洁,并以优雅的方式解决了开发人员的真正痛点。如果您正在构建工具、自动化工作流程,或者只是不想 Debug 到很晚,这些 lib 值得了解(躺着吃灰都行,需要的时候至少知道有这么个东西)。

1. Rich — 因为 CLI ≠ Ugly

还记得您的命令行输出看起来像在 Windows 95 中设置样式的日子吗?Rich 在这里以时尚的方式解决这个问题。

巴辉特插一嘴:如果只是作为脚本,各种炫酷的着色挺好的,更易于人类阅读。但如果是常驻进程的日志,最佳实践就是不要打印这些乱七八糟的颜色了,而且尽量把日志打印成结构化内容,比如 JSON 格式的日志,更易于各类可观测性系统处理。

2. Typer — 构建 CLI 的最快方法

命令行工具经常要处理参数、HELP 信息,Typer 是必须要了解一下的,非常实用。比如下面的脚本:

import typer

def main(name: str):
    typer.echo(f"Hello {name}")

if __name__ == "__main__":
    typer.run(main)

我将之保存为 a.py,然后执行测试一下,可以看到非常美观的提示信息:

3. Pendulum — 日期时间推荐库

用人类易读的方式来处理日期时间:

import pendulum

dt = pendulum.now("UTC").add(days=3)
print(dt.to_datetime_string())

Pendulum 甚至可用于解析 “next Thursday at 5pm” 这样的描述。

4. Pydantic

我过去常常手动验证 JSON。(求轻拍…然后我找到了 Pydantic。定义一个带有类型提示的类,然后 — 验证、记录、解析,就都有了。

from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str
    is_active: bool = True

用于 :验证 API 响应、配置和输入数据。

⚠️ 注意 :它是 FastAPI 的支柱是有原因的。但即使在网络世界之外呢?仍然很值得关注。

5. Faker - 创建具有个性的虚拟数据

无论您是在模拟 API、生成开发数据库,还是只是试图生成令人信服的虚假用户资料,Faker 都能满足您的需求。

from faker import Faker
fake = Faker()
print(fake.name(), fake.email(), fake.address())

6. tqdm — 不耐烦的进度条

你可能以前见过这个。但是,如果您不虔诚地使用它,我们需要谈谈。

Tqdm 包装任何可迭代对象并显示一个智能的响应式进度条。非常适合循环、下载或观看大型作业,而不会静默冻结。

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,它使日志记录看起来像写入 journal — 除了级别、文件旋转和彩色输出。

from loguru import logger

logger.add("debug.log", rotation="1 MB")
logger.info("Processing started...")
  • ✔️ 将其用于 :调试、生产日志和更好的睡眠。
  • 👀 您看到了吗?: 一行替换 print() 并配置一个完整的日志记录系统。

人生苦短,我用 Python!

不经意间,在监控领域创业四年了,如果您想索要监控/可观测性白皮书资料或申请产品演示,都可联系我们(免费哒)👇

监控/可观测性白皮书

原文:https://python.plainenglish.io/8-python-libraries-so-good-i-stopped-writing-my-own-scripts-8b5cca0d6aa1

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat