在日常开发中,pandas、requests、selenium 等常见库几乎是标配,但随着时间推移,它们带来的“惊喜”逐渐消退。几个月前,我发现自己的脚本运行缓慢、重复冗余,维护起来枯燥乏味。于是,我开始尝试在主流榜单之外寻找更轻量、更高效的工具。结果意外收获了 10 个鲜为人知的 Python 库,它们极大改善了我的自动化流程。更重要的是,大部分上手不到 5 分钟即可使用。
传统 ORM 在异步环境下常常处理繁琐,Gino 基于 SQLAlchemy Core 构建,专为 FastAPI、Sanic 等异步框架设计。
from gino import Ginodb = Gino()classUser(db.Model): __tablename__ = 'users'id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String())asyncdefget_users():await db.set_bind('postgresql://user:pass@localhost/db') users = await User.query.gino.all()print(users)优势:简化数据库异步调用,消除传统 ORM 的阻塞问题。
相比 datetime,Arrow 语法更直观,尤其在多时区、格式转换等场景下更友好。
import arrowutc = arrow.utcnow()local_time = utc.to('Asia/Shanghai')print(local_time.format('YYYY-MM-DD HH:mm'))优势:适合跨时区任务调度、日志时间戳处理。
网络不稳定、API 超时常见,但手写重试逻辑冗余。Tenacity 用装饰器即可解决。
from tenacity import retry, stop_after_attemptimport random@retry(stop=stop_after_attempt(3))defunstable_task():if random.randint(0, 1) == 0:raise Exception("Network error")print("Success!")unstable_task()优势:轻松提升脚本稳定性。
相比 Levenshtein,RapidFuzz 在大规模文本匹配场景下更快。
from rapidfuzz import fuzzscore = fuzz.ratio("automation", "automatoin")print(score)优势:适合数据清洗、模糊查重。
脚本一旦涉及多步骤流程,维护难度急剧上升。Prefect 提供可视化、可追踪的工作流编排。
from prefect import flow, task@taskdefextract():return"data"@taskdeftransform(data):return data.upper()@flowdefetl_flow(): data = extract() clean = transform(data)print(clean)etl_flow()优势:让零散脚本转化为可管理的流水线。
相比 Elasticsearch,Meilisearch 更轻巧,部署简单。
from meilisearch import Clientclient = Client("http://127.0.0.1:7700")client.index("books").add_documents([ {"id": 1, "title": "Deep Learning with Python"}])优势:快速构建搜索功能,无需庞大依赖。
在需要人工输入时,input() 功能有限。PyInputPlus 内置验证、重试、超时机制。
import pyinputplus as pyipage = pyip.inputInt("请输入年龄: ", min=0, max=120)print(age)优势:减少重复的校验代码。
频繁调用 API 时,缓存可节省请求次数和费用。CacheTools 提供灵活的缓存策略。
from cachetools import cached, TTLCachecache = TTLCache(maxsize=100, ttl=300)@cached(cache)defget_data(x):print("Fetching...")return x * 2print(get_data(5))print(get_data(5))优势:避免重复请求,优化性能。
在日志归档、备份等任务中,Zstandard 在压缩比和速度上均优于 gzip。
import zstandard as zstdcctx = zstd.ZstdCompressor()compressed = cctx.compress(b"some large data")优势:降低存储成本,加快处理速度。
相比 PyPDF2,PikePDF 更高效、稳定,底层基于 QPDF。
import pikepdfpdf = pikepdf.open("input.pdf")pdf.pages.rotate(0, 90)pdf.save("output.pdf")优势:批量处理 PDF 文件更轻松。
这些库的价值不仅体现在功能上,更在于它们能自然融入自动化流程,减少冗余代码,提升可维护性。
建议开发者平时多做探索,不必等到“刚好需要”时才去寻找工具。提前储备,问题出现时自然能快速找到最优解。
长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等 推荐阅读
点击 阅读原文 了解更多