你是否是那种‘不造轮子不舒服’的开发者——需要什么功能?现成的库?不存在的,自己撸代码!JSON 转 CSV?命令行仪表盘?‘给我 30 分钟,Vim 里徒手搞定!’
而真正的效率不是能写多少代码,而是知道什么时候不该写代码。
就拿最近我最常使用的 Rich 来举例,它只用 3 行代码 就能解决了你过去熬夜调试的终端渲染问题:
print(json.dumps()) 瞎眼了)┐└─ 符号地狱变成自动对齐+分页的印刷级显示Rich 和其他 7 个库(见下文)教会我们一件事:用别人的轮子不是偷懒,而是把时间投资在真正创造价值的地方。
如果你也厌倦了重复解决已被完美解决的问题,是时候升级你的工具箱了。
还记得以前命令行输出看起来像 Windows 95 那样的样式吗?Rich 可以解决这个问题——而且是样式化的。
只需一次导入,即可让终端输出看起来像在 Figma 中设计的那样。表格、Markdown 渲染、语法高亮的回溯、毫无压力的进度条……简直让人欲罢不能。
from rich.console import Consoleconsole = Console()console.print("Hello, [bold magenta]world[/bold magenta]!")rich.traceback.install()用华丽、上下文丰富的回溯替换丑陋的 Python 回溯 - 无需额外工作。不再使用argparse……,我推荐使用 Typer。
Typer 基于 Click 构建,使用函数签名和类型提示构建命令行界面 (CLI) 变得非常简单。只需添加文档字符串,基本上就能编写帮助命令了。
import typerdefmain(name: str): typer.echo(f"Hello {name}")if __name__ == "__main__": typer.run(main)
--help time。datetime会背刺你有没有试过在 Python 中对两个日期时间进行减法运算,结果却……很奇怪?没错,就是这种感觉。 Pendulum 就是这样一款可直接替代 datetime 的软件,它能像成年人一样处理时区、格式化、持续时间和运算。
import pendulumdt = pendulum.now("UTC").add(days=3)print(dt.to_datetime_string())我以前都是手动验证 JSON 的。(别评判。)后来我发现了 Pydantic。定义一个带类型提示的类,然后就搞定了——验证、记录、解析。
from pydantic import BaseModelclassUser(BaseModel): id: int name: str is_active: bool = True
无论你是在模拟 API、播种开发数据库,还是仅仅试图生成令人信服的虚假用户资料(希望不是出于不可告人的原因),Faker 都能满足你的需求。
from faker import Fakerfake = Faker()print(fake.name(), fake.email(), fake.address())你可能之前见过这个。但如果你不经常用它,我们得聊聊。
Tqdm 可以包装任何可迭代对象,并显示智能且响应迅速的进度条。非常适合循环、下载或监控大型作业,避免程序静默卡顿。
from tqdm import tqdmfor i in tqdm(range(10000)):pass我喜欢requests。我可以忍受BeautifulSoup。但是requests-html?
它结合了请求的简洁性和无头浏览器的解析能力。它还能执行 JavaScript!这意味着你终于可以安心地抓取现代网页了。
from requests_html import HTMLSessionsession = HTMLSession()r = session.get('https://example.com')r.html.render()print(r.html.find('h1')[0].text)
Python 默认的日志记录功能……冗长,而且不直观。Loguru 的出现,让日志记录看起来就像在写日记一样——只不过它有日志级别、文件轮换和彩色输出。
from loguru import loggerlogger.add("debug.log", rotation="1 MB")logger.info("Processing started...")print() 和配置完整的日志系统。
推荐阅读
点击 阅读原文 了解更多