Python自动化实战:2026年我仍在用的那些项目与场景

写在前面

搞Python自动化这些年,我有一个感受:工具不在多,在于你真正用过、踩过坑、还愿意继续用的。

网上不缺"Python自动化十大库"这类清单文,但大多数读完就忘------因为它们只告诉你"有什么",不告诉你"什么场景下真的好用"。

这篇文章不讲大道理,只聊我在实际工作中反复用到的Python自动化项目,以及它们各自最擅长的场景。每个方向我都会给出真实使用感受,包括它好在哪里、坑在哪里。

如果你也厌倦了复制粘贴式的工具清单,这篇可能对你有点用。


一、文件与目录处理:pathlib + shutil

为什么不用os.path?

说实话,2026年了,如果你还在写 os.path.join('a', 'b', 'c'),是时候升级了。

pathlib 从Python 3.4引入,到今天已经是标准库中最优雅的文件路径处理方案。面向对象的写法,链式调用,可读性碾压 os.path 系列。

python 复制代码
from pathlib import Path

# 创建目录
Path('data/raw/2026-08').mkdir(parents=True, exist_ok=True)

# 遍历所有CSV文件
for f in Path('data').rglob('*.csv'):
    print(f.name, f.stat().st_size)

# 读取文本
content = Path('config.yaml').read_text(encoding='utf-8')

shutil:批量文件操作的瑞士军刀

当你需要移动、复制、压缩 大量文件时,shutil 是最直接的选择。

python 复制代码
import shutil

# 按日期归档日志文件
for log in Path('logs').glob('*.log'):
    date_str = log.stat().st_mtime
    target_dir = Path('archive') / '2026-08'
    target_dir.mkdir(parents=True, exist_ok=True)
    shutil.copy2(log, target_dir / log.name)

# 打包整个目录
shutil.make_archive('backup_202608', 'zip', 'data/')

我的感受pathlib + shutil 组合,覆盖了我90%的文件操作需求。只有在需要监听文件变化时才会考虑 watchdog,其他时候这两个就够了。


二、网页自动化:Playwright

Selenium的时代正在落幕

这不是我一个人的观点。2026年最新的开发者生态报告显示,Playwright使用率已达38.7%,正式超越Selenium的29.1%

原因很简单:Playwright更快、更稳、API更现代。自动等待机制、原生多浏览器支持、一步录制脚本------这些特性让Selenium的WebDriver模式显得笨重。

python 复制代码
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    
    # 自动等待元素出现
    page.goto('https://example.com')
    page.fill('#search', 'Python自动化')
    page.click('#submit')
    
    # 截图保存
    page.screenshot(path='result.png')
    browser.close()

我的实战场景

  • 批量填报表单:200个员工信息录入OA系统,脚本跑10分钟搞定
  • 网页数据采集:动态渲染的SPA页面,Playwright能等JS执行完再抓
  • 自动化测试:CI/CD流水线里跑端到端测试,比Selenium快3倍

踩过的坑headless=True 时某些网站会检测到无头模式,需要用 stealth 插件绕过。但大部分内部系统没这个问题。

如果你还在用Selenium,建议花一个周末迁移到Playwright。学习成本很低,回报很高。


三、数据抓取:requests + BeautifulSoup / Scrapy

轻量场景:requests + BeautifulSoup

不是所有抓取都需要上框架。如果目标页面是静态HTML,requests + BeautifulSoup 是最轻量的组合。

python 复制代码
import requests
from bs4 import BeautifulSoup

resp = requests.get('https://news.example.com', 
                     headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(resp.text, 'html.parser')

titles = [h2.text.strip() for h2 in soup.select('h2.title')]

适合场景:简单页面、一次性抓取、快速验证想法。

重量场景:Scrapy

当你的需求变成持续抓取数千个页面、需要去重、需要管道处理、需要限速 时,Scrapy 才是正确的选择。

python 复制代码
import scrapy

class BlogSpider(scrapy.Spider):
    name = 'blog'
    start_urls = ['https://blog.example.com/page/1']
    
    def parse(self, response):
        for article in response.css('article.post'):
            yield {
                'title': article.css('h2::text').get(),
                'url': article.css('a::attr(href)').get(),
            }
        # 自动翻页
        next_page = response.css('a.next::attr(href)').get()
        if next_page:
            yield response.follow(next_page, self.parse)

我的选型原则

场景 工具 理由
抓1个页面 requests + BS4 五分钟写完,没必要上框架
抓100个页面 Scrapy 内置并发、去重、管道
动态渲染页面 Playwright JS没执行完,BS4拿不到数据
反爬严格的站 Playwright + stealth 模拟真实浏览器行为

四、办公自动化:openpyxl + python-docx

Excel:openpyxl

Python操作Excel的库很多------xlrdxlwtpandasopenpyxl。但如果你需要读写xlsx、设置格式、合并单元格、插入图表openpyxl 是最全面的。

python 复制代码
from openpyxl import Workbook, load_workbook
from openpyxl.styles import Font, PatternFill

wb = Workbook()
ws = wb.active
ws.title = '月度报告'

# 写入数据 + 设置样式
header_font = Font(bold=True, color='FFFFFF')
header_fill = PatternFill('solid', fgColor='4472C4')

for col, title in enumerate(['日期', '访问量', '转化率'], 1):
    cell = ws.cell(row=1, column=col, value=title)
    cell.font = header_font
    cell.fill = header_fill

# 写入数据行
data = [('2026-08-01', 12000, '3.2%'),
        ('2026-08-02', 15000, '4.1%'),
        ('2026-08-03', 18000, '5.0%')]

for row_idx, row_data in enumerate(data, 2):
    for col_idx, value in enumerate(row_data, 1):
        ws.cell(row=row_idx, column=col_idx, value=value)

wb.save('月度报告.xlsx')

Word:python-docx

需要批量生成合同、报告、通知函?python-docx 可以帮你把模板替换做到自动化。

python 复制代码
from docx import Document

doc = Document('合同模板.docx')

# 替换占位符
for paragraph in doc.paragraphs:
    if '{company}' in paragraph.text:
        paragraph.text = paragraph.text.replace('{company}', '某某科技有限公司')
    if '{date}' in paragraph.text:
        paragraph.text = paragraph.text.replace('{date}', '2026年8月9日')

doc.save('合同_某某科技_20260809.docx')

我的感受:办公自动化是Python最"亲民"的方向。你不需要什么高深算法,只要会文件读写 + 字符串替换,就能帮同事省掉大量重复劳动。这种"小工具大价值"的事情,往往最容易赢得团队好感。


五、桌面GUI自动化:PyAutoGUI

当你需要控制鼠标、键盘、识别屏幕图像 时,PyAutoGUI 是最直接的方案。

python 复制代码
import pyautogui
import time

# 留3秒切换到目标窗口
time.sleep(3)

# 点击坐标
pyautogui.click(x=500, y=300)

# 输入文字
pyautogui.typewrite('Hello Python', interval=0.05)

# 截屏找图并点击
location = pyautogui.locateOnScreen('button.png', confidence=0.9)
if location:
    pyautogui.click(location)

适用场景与局限

适合:操作那些没有API的老旧软件、ERP系统、桌面客户端。

不适合:任何有API可调用的场景。能用API就别用GUI自动化------这是铁律。GUI自动化的脆弱性在于:窗口位置一变、分辨率一换、UI一更新,脚本就挂了。

我的建议:PyAutoGUI是"最后的手段",不是首选。先找API,找不到再考虑它。


六、定时任务调度:Schedule

Python自带的 schedcron 都能用,但 schedule 库的API设计简直是艺术品------人类可读的链式调用

python 复制代码
import schedule
import time

def daily_report():
    print('生成日报...')

def sync_data():
    print('同步数据...')

schedule.every().day.at('09:00').do(daily_report)
schedule.every().hour.do(sync_data)
schedule.every(10).minutes.do(lambda: print('心跳检查'))

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

但要注意schedule 是进程内的轻量调度,适合脚本和小项目。如果你的定时任务需要持久化、分布式、失败重试 ,请直接上 Celery BeatAPScheduler,别在 schedule 上硬扛。


七、运维脚本:Fabric

需要SSH到多台服务器执行命令、部署代码?Fabric 把这事儿简化成了几行Python。

python 复制代码
from fabric import Connection

# 连接远程服务器部署
with Connection('user@server.example.com') as c:
    c.run('cd /app && git pull')
    c.run('pip install -r requirements.txt')
    c.run('systemctl restart myapp')
    c.put('config.ini', '/app/config.ini')

我的感受:Fabric最适合的场景是"少量服务器 + 简单部署流程"。一旦服务器数量超过10台,或者部署流程涉及灰度发布、回滚、健康检查,就该上Ansible或K8s了。但在小团队和个人项目中,Fabric的效率无可匹敌。


选型总结:一张表搞定

方向 首选库 备选 典型场景
文件处理 pathlib + shutil watchdog 目录归档、日志清理
网页自动化 Playwright Selenium 表单填报、E2E测试
静态页面抓取 requests + BS4 httpx 一次性数据采集
大规模爬虫 Scrapy --- 持续化、多页面采集
Excel处理 openpyxl pandas 报表生成、格式设置
Word处理 python-docx --- 合同/报告批量生成
桌面GUI PyAutoGUI pywinauto 无API的老旧系统操作
定时任务 schedule APScheduler 脚本级轻量调度
运维部署 Fabric Ansible SSH批量操作

写在最后

Python自动化的核心从来不是"知道多少库",而是识别重复劳动、选择合适工具、把流程脚本化

我见过有人用50行Python脚本替代了每天2小时的手工操作,也见过有人花一周写了个"万能自动化框架"最后没人用。区别在哪?前者解决真实问题,后者追求技术自嗨。

少即是多。先把一个方向吃透,比什么都试一点强一百倍。

如果你也在用Python做自动化,欢迎在评论区分享你的实战经验------我始终相信,最好的工具清单来自真实使用者的交流,而不是搜索引擎的聚合结果。