值得收藏的 8 个 Python 库
坦率地说:我曾经是那个坚持从零开始写每个东西的人。需要 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