值得收藏的 8 个 Python 库

整理 8 个实用 Python 库:Rich、Typer、Pendulum、Pydantic、Faker、tqdm、Requests-HTML 和 Loguru,覆盖 CLI、参数解析、日期时间、数据验证、测试数据、进度条、网页抓取和日志记录。

作者 快猫运营团队

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

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

所以今天,我分解 8 个值得了解的 Python 库。它们不是为了“显得高级”,而是解决开发者经常遇到的真实问题:命令行输出难看、CLI 参数麻烦、日期时间难处理、输入数据不可信、测试数据不好造、大任务没有进度反馈、网页抓取复杂、日志配置冗长。

核心摘要

  • 如果你经常写命令行脚本,Rich 和 Typer 能明显改善交互体验和参数处理成本。
  • 如果项目里有 API 响应、配置文件或用户输入,Pydantic 可以把类型提示变成可执行的数据校验。
  • Faker、tqdm、Loguru 分别解决测试数据、任务进度和日志记录这三类高频小问题。
  • Requests-HTML 适合需要 JavaScript 渲染的网页抓取场景,但生产爬虫仍要注意目标站点规则和稳定性。
  • 这些库适合“知道有这么个工具,遇到对应问题时少造轮子”,不意味着每个项目都必须引入。

8 个 Python 库适合解决什么问题

主要用途 适合场景
Rich 美化终端输出 CLI 工具、调试脚本、人工阅读输出
Typer 快速构建 CLI 参数解析、帮助信息、命令行入口
Pendulum 日期时间处理 时区、时间偏移、可读时间表达
Pydantic 数据验证和解析 API 响应、配置、输入数据
Faker 生成虚拟数据 测试、模拟用户、开发数据库
tqdm 进度条 循环、批处理、下载任务
Requests-HTML 网页抓取 需要解析或渲染页面的抓取任务
Loguru 日志记录 脚本、服务、调试和日志轮转

1. Rich — 因为 CLI ≠ Ugly

还记得您的命令行输出看起来像在 Windows 95 中设置样式的日子吗?Rich 可以用更友好的方式解决这个问题。它适合把表格、颜色、进度、Markdown 风格文本等内容输出到终端,让人更容易读懂脚本结果。

巴辉特插一嘴:如果只是作为脚本,各种炫酷的着色挺好的,更易于人类阅读。但如果是常驻进程的日志,最佳实践就是不要打印这些乱七八糟的颜色了,而且尽量把日志打印成结构化内容,比如 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 — 日期时间推荐库

日期时间处理经常牵涉时区、加减天数、格式化和可读性。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...")

结论

这 8 个 Python 库的共同点不是“流行”,而是能把常见工程问题收敛成清晰 API。写脚本、做自动化、处理数据、构建内部工具时,先判断问题属于哪一类,再选择对应库,通常比从零手写更稳。

当然,引入第三方库也要考虑项目体量、依赖管理和运行环境。如果只是一次性几行脚本,标准库可能就够;如果是多人维护、需要长期运行或面向用户的工具,成熟库往往能节省更多调试成本。

FAQ

Q1:这些库都必须安装吗? A:不需要。它们对应不同场景,遇到 CLI、美化输出、数据验证、测试数据、进度条、抓取或日志问题时,再按需选择即可。

Q2:Rich 适合服务端日志吗? A:作为人工执行脚本的输出很适合。但如果是常驻进程日志,原文也提醒过,通常更建议结构化日志,例如 JSON,方便可观测性系统处理。

Q3:Pydantic 只能和 FastAPI 一起用吗? A:不是。它可以单独用于配置校验、API 响应解析、输入数据验证等场景。

Q4:Requests-HTML 适合所有网页抓取吗? A:不适合一概而论。它适合需要 JavaScript 渲染的页面,但抓取任务还要考虑目标站点规则、执行成本和稳定性。

  • ✔️ 将其用于 :调试、生产日志和更好的睡眠。
  • 👀 您看到了吗?: 一行替换 print() 并配置一个完整的日志记录系统。

人生苦短,我用 Python!

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

监控/可观测性白皮书

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

延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云