Py学习  »  Python

这 12 个 Python 小工具库很加分!

AirPython • 2 周前 • 49 次点击  

来源:网络


我还记得那个深夜,我本来只是想“试试”一个新的 Python 库。计划?简单试一下。现实?我写到天都亮了,还在不停地给一个压根没打算做的工具加功能。这就是 Python 的魔力,它不只是个编程语言,简直是个让人沉迷的兔子洞,停不下来地折腾。

图片

过去四年,我烧掉了无数个周末,凌晨三点还在修代码,做了比我愿意承认的还要多的 side projects,全因为我发现了几个像是作弊码一样的库。它们不只是省时间,简直让我想把一切都自动化。

以下是 12 个让我上瘾、停不下来建项目的 Python 库。

1. TQDM:让你感觉像黑客的进度条

看着进度条在屏幕上滑过,真的有种满足感。有了 tqdm,再无聊的循环都变得像电影一样。

from tqdm import tqdm
import time

for i in tqdm(range(100)):
    time.sleep(0.05)

我第一次用  tqdm 是在一个文件复制脚本里,纯粹好玩。然后就停不下来了。现在我每个耗时长的脚本都有个酷炫的进度条。它上瘾的地方在于即时反馈,相信我,一旦用上,你再也不会忍受没有进度条的循环。

2. Arrow:轻松搞定日期和时间

以前我一想到处理 Python 的日期时间就头疼。时区、格式、解析……简直一团乱。然后我发现了 arrow

import arrow

dt = arrow.utcnow()
print(dt.shift(hours=5).format('YYYY-MM-DD HH:mm'))

突然间,处理时间变得毫无压力。我开始自动化提醒、安排备份,甚至写了个自动用时间戳重命名文件的脚本。如果你也跟 datetime 较过劲,arrow 就像一股清风。

3. Faker:假数据也能逼真

在我第一个 Django 项目里,我需要测试用户。总不能一直复制粘贴“John Doe”一百次吧?然后我发现了 faker

from faker import Faker

fake = Faker()
for _ in  range(3):
    print(fake.name(), fake.email())

接下来,我开始用假地址、信用卡、公司名填充整个数据库。突然间,测试变得不再无聊,反而有趣了。

4. Fire:把脚本变成命令行工具

我写过一个清理笔记本上重复文件的脚本。后来我想用不同参数运行它,但不想每次都改代码。于是发现了 fire

import fire

def  greet(name="World"):
    return f"Hello {name}!"

if __name__ == '__main__':
    fire.Fire(greet)

一行代码,你的脚本就变成了一个完整的命令行工具。这个小发现让我开始为所有自动化任务写 mini-CLIs。

5. Playwright Sync:网页自动化不抓狂

好吧,Selenium 很强大,但用着真想抓狂。后来我试了  Playwright sync,顺滑得像黄油一样的浏览器自动化。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://example.com")
    print(page.title())

我从抓狂变成了沉迷。先是爬网页,然后自动填表,再到测试我自己的应用。突然间,浏览器不再是障碍,而是游乐场。

6. PyInputPlus:更聪明的用户输入

你有没有写过 CLI 脚本,结果用户总在提示框里输入乱七八糟的东西?我遇到过。PyInputPlus 解决了这个问题。

import pyinputplus as pyip

age = pyip.inputInt("Enter your age: "min=1)
print(f"You are {age}  years old.")

不用自己写验证逻辑,这个库帮你搞定。听起来小,但让 CLI 工具变得牢不可破。

7. PDFPlumber:PDF 也能听话

我曾经需要从一个 200 页的 PDF 报告里提取表格。手动复制?不可能。正则表达式?噩梦一场。然后我发现了 PDFplumber

import pdfplumber

with pdfplumber.open("report.pdf"as pdf:
    first_page = pdf.pages[0]
    text = first_page.extract_text()
    print(text)

本来只是个一次性项目,结果我开始建 PDF 搜索工具、自动摘要脚本,甚至发票分析器。

8. Tenacity:重试到成功为止

API 会挂,网络会断。没有重试,脚本就崩了。有了 tenacity,重试变得毫无压力。

from tenacity import retry, stop_after_attempt
import random

@retry(stop=stop_after_attempt(3))
def flaky_task():
    if random.random() 0.7:
        raise Exception("Failed!")
    return "Success!"

print(flaky_task())

这个库在我一个爬虫项目里救了我,那网站老是随机掉线。没啥挫败感了,交给 tenacity 去重试就行。

9. IceCream:调试也能很酷

打印调试被低估了。但用 icecream,它变得让人上瘾。

from icecream import ic

x = 42
ic(x * 2)

它会打印表达式和值。我从到处撒 print(),变成了真的享受调试。

10. Schedule:自动化你的生活

我用 schedule 做了第一个 cron 替代品。简单、可读,让自动化脚本变得轻松。

import schedule, time

def job():
    print( "Running task...")

schedule.every(10).seconds.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

我从备份开始,然后是提醒,再到健康检查。没多久,我的电脑就像个私人助理,跑着一堆 mini daemons。

11. Humanize:让数字会说话

原始数字很无聊。Humanize 让它们变得可读。




    
import humanize
print(humanize.intcomma(1234567))
print(humanize.naturaltime(3600))

我第一次在日志脚本里用它。突然间,日志从晦涩变得清晰。你不再看到“3600秒”,而是“一个小时前”。

12. PyWhatKit:自动化像魔法

想用 Python 发 WhatsApp 消息?或者播放 YouTube 视频?PyWhatKit 一行代码搞定。




    
import pywhatkit

pywhatkit.playonyt("Python automation tutorials")

有一晚我写了个脚本,每天早上 9 点通过 WhatsApp 给我发随机的励志名言。半开玩笑半认真,但它真跑起来了。

总结

这些库不只是让我更高效,它们让编码变得鲜活。每发现一个库,我就忍不住建了个没计划过的东西。这就是 Python 的魅力:它的生态系统推着你去实验、去自动化、去折腾,直到你造出新东西。

我的建议:今晚挑一个库,拿它做个“傻乎乎”的项目。傻项目总有办法变成聪明的主意,你会学到比预期更多的东西。

图片



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/187851