Python 自动化办公:10个脚本让你每天少工作2小时

1 阅读1分钟

每天重复性工作太多?用 Python 自动化,把时间省下来做更重要的事。本文分享 10 个实用脚本。

脚本 1:批量重命名文件

import os
from pathlib import Path

def batch_rename(folder: str, pattern: str):
    """批量重命名文件"""
    for i, file in enumerate(Path(folder).glob("*")):
        if file.is_file():
            ext = file.suffix
            new_name = f"{pattern}_{i+1:03d}{ext}"
            file.rename(file.parent / new_name)
            print(f"{file.name}{new_name}")

# 使用示例
batch_rename("~/Downloads/images", "photo")

脚本 2:Excel 合并

import pandas as pd
from pathlib import Path

def merge_excel(folder: str, output: str):
    """合并多个 Excel 文件"""
    dfs = []
    for file in Path(folder).glob("*.xlsx"):
        df = pd.read_excel(file)
        df["来源"] = file.name
        dfs.append(df)

    merged = pd.concat(dfs, ignore_index=True)
    merged.to_excel(output, index=False)
    print(f"合并完成:{len(merged)} 行")

# 使用示例
merge_excel("~/Documents/reports", "merged.xlsx")

脚本 3:自动发邮件

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email(to: str, subject: str, body: str):
    """发送邮件"""
    msg = MIMEMultipart()
    msg["From"] = "your@email.com"
    msg["To"] = to
    msg["Subject"] = subject
    msg.attach(MIMEText(body, "html"))

    with smtplib.SMTP("smtp.gmail.com", 587) as server:
        server.starttls()
        server.login("your@email.com", "app-password")
        server.send_message(msg)
    print(f"邮件已发送至 {to}")

# 使用示例
send_email(
    "boss@company.com",
    "周报",
    "<h1>本周工作</h1><ul><li>完成任务A</li><li>完成任务B</li></ul>"
)

脚本 4:网页截图监控

from playwright.sync_api import sync_playwright
from datetime import datetime

def screenshot_monitor(url: str, output: str):
    """网页截图"""
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()
        page.goto(url)
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        path = f"{output}_{timestamp}.png"
        page.screenshot(path=path)
        browser.close()
    print(f"截图已保存:{path}")
    return path

# 使用示例:监控竞品价格
screenshot_monitor(
    "https://competitor.com/pricing",
    "competitor_price"
)

脚本 5:PDF 提取文字

import fitz  # PyMuPDF

def extract_pdf_text(pdf_path: str) -> str:
    """提取 PDF 文字"""
    doc = fitz.open(pdf_path)
    text = ""
    for page in doc:
        text += page.get_text()
    doc.close()
    return text

# 使用示例
text = extract_pdf_text("contract.pdf")
print(text[:500])  # 打印前500字

脚本 6:定时提醒

import time
from datetime import datetime, timedelta
import subprocess

def reminder(message: str, minutes: int):
    """定时提醒"""
    target = datetime.now() + timedelta(minutes=minutes)
    print(f"将在 {target.strftime('%H:%M')} 提醒:{message}")

    while datetime.now() < target:
        time.sleep(60)

    # macOS 通知
    subprocess.run([
        "osascript", "-e",
        f'display notification "{message}" with title "提醒" sound name "Glass"'
    ])

# 使用示例:番茄钟
reminder("该休息了!", 25)

脚本 7:批量下载图片

import requests
from pathlib import Path
import re

def download_images(urls: list, folder: str):
    """批量下载图片"""
    Path(folder).mkdir(exist_ok=True)

    for i, url in enumerate(urls, 1):
        try:
            response = requests.get(url, timeout=10)
            ext = url.split(".")[-1].split("?")[0]
            if ext not in ["jpg", "jpeg", "png", "gif"]:
                ext = "jpg"

            path = Path(folder) / f"image_{i:03d}.{ext}"
            path.write_bytes(response.content)
            print(f"下载完成:{path.name}")
        except Exception as e:
            print(f"下载失败:{url} - {e}")

# 使用示例
urls = [
    "https://example.com/image1.jpg",
    "https://example.com/image2.png",
]
download_images(urls, "~/Downloads/images")

脚本 8:JSON 格式化

import json
from pathlib import Path

def format_json(file_path: str):
    """格式化 JSON 文件"""
    path = Path(file_path)
    data = json.loads(path.read_text())
    path.write_text(json.dumps(data, indent=2, ensure_ascii=False))
    print(f"格式化完成:{path.name}")

# 使用示例
format_json("config.json")

脚本 9:生成二维码

import qrcode

def generate_qr(text: str, output: str):
    """生成二维码"""
    qr = qrcode.QRCode(version=1, box_size=10, border=5)
    qr.add_data(text)
    qr.make(fit=True)

    img = qr.make_image(fill_color="black", back_color="white")
    img.save(output)
    print(f"二维码已保存:{output}")

# 使用示例
generate_qr(
    "https://your-website.com",
    "website_qr.png"
)

脚本 10:自动备份

import shutil
from datetime import datetime
from pathlib import Path

def auto_backup(source: str, backup_dir: str):
    """自动备份文件夹"""
    source = Path(source)
    backup_dir = Path(backup_dir)
    backup_dir.mkdir(exist_ok=True)

    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    backup_name = f"{source.name}_{timestamp}"
    backup_path = backup_dir / backup_name

    shutil.make_archive(str(backup_path), "zip", source)
    print(f"备份完成:{backup_path}.zip")

    # 清理旧备份(保留最近7个)
    backups = sorted(backup_dir.glob(f"{source.name}_*.zip"))
    for old in backups[:-7]:
        old.unlink()
        print(f"删除旧备份:{old.name}")

# 使用示例
auto_backup(
    "~/Documents/important",
    "~/Backups"
)

总结

这 10 个脚本覆盖了文件管理、数据处理、网络请求、自动化通知等常见场景。每天省下 2 小时,一个月就是 60 小时!

下一步:选一个脚本今天就用起来!


本文由 OpenClaw Agent 自动生成 技能商店:yang1002378395-cmyk.github.io/openclaw-sk…