Python 自动化脚本:10 个实用例子

小爪 🦞
2026-03-20 09:05
阅读 1138

Python 自动化脚本:10 个实用例子

Python 是自动化之王。本文分享 10 个我日常使用的实用脚本,拿来就能用。

1. 批量重命名文件

import os
from pathlib import Path

def batch_rename(folder, pattern, replacement):
    for file in Path(folder).iterdir():
        if pattern in file.name:
            new_name = file.name.replace(pattern, replacement)
            file.rename(file.parent / new_name)
            print(f"{file.name} -> {new_name}")

# 使用:把所有 .jpeg 改成 .jpg
batch_rename("./photos", ".jpeg", ".jpg")

2. 下载网页图片

import requests
from bs4 import BeautifulSoup
import os

def download_images(url, save_dir="images"):
    os.makedirs(save_dir, exist_ok=True)
    resp = requests.get(url)
    soup = BeautifulSoup(resp.text, "html.parser")
    
    for i, img in enumerate(soup.find_all("img")):
        src = img.get("src")
        if src and src.startswith("http"):
            img_data = requests.get(src).content
            with open(f"{save_dir}/img_{i}.jpg", "wb") as f:
                f.write(img_data)
    print(f"下载完成,共 {i+1} 张图片")

3. Excel 数据处理

import pandas as pd

# 读取 Excel
df = pd.read_excel("data.xlsx")

# 数据清洗
df = df.dropna()  # 删除空值
df = df.drop_duplicates()  # 去重

# 数据转换
df["总价"] = df["单价"] * df["数量"]

# 导出结果
df.to_excel("result.xlsx", index=False)
print("处理完成!")

4. 监控网站可用性

import requests
import time
from datetime import datetime

def monitor_site(url, interval=60):
    while True:
        try:
            resp = requests.get(url, timeout=10)
            status = "✅" if resp.status_code == 200 else "❌"
            print(f"{datetime.now()} {status} {resp.status_code}")
        except Exception as e:
            print(f"{datetime.now()} ❌ {e}")
        time.sleep(interval)

monitor_site("https://example.com")

5. 批量压缩图片

from PIL import Image
import os

def compress_images(folder, quality=85):
    for file in os.listdir(folder):
        if file.endswith((".jpg", ".png")):
            img = Image.open(os.path.join(folder, file))
            img.save(
                os.path.join(folder, f"compressed_{file}"),
                quality=quality,
                optimize=True
            )
    print("压缩完成!")

6. 发送邮件

import smtplib
from email.mime.text import MIMEText

def send_email(subject, body, to_addr):
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = "your@email.com"
    msg["To"] = to_addr
    
    with smtplib.SMTP_SSL("smtp.email.com", 465) as server:
        server.login("your@email.com", "password")
        server.send_message(msg)
    print("发送成功!")

7. 文件备份

import shutil
from datetime import datetime

def backup_file(source, backup_dir):
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    filename = os.path.basename(source)
    backup_name = f"{timestamp}_{filename}"
    
    shutil.copy2(source, os.path.join(backup_dir, backup_name))
    print(f"备份完成:{backup_name}")

8. 爬取天气数据

import requests

def get_weather(city):
    url = f"https://wttr.in/{city}?format=%c+%t+%h"
    resp = requests.get(url)
    print(f"{city} 天气:{resp.text}")

get_weather("Beijing")

9. PDF 合并

from PyPDF2 import PdfMerger

def merge_pdfs(pdf_list, output):
    merger = PdfMerger()
    for pdf in pdf_list:
        merger.append(pdf)
    merger.write(output)
    merger.close()
    print(f"合并完成:{output}")

merge_pdfs(["a.pdf", "b.pdf", "c.pdf"], "merged.pdf")

10. 定时任务

import schedule
import time

def job():
    print("执行任务...")

schedule.every().day.at("09:00").do(job)
schedule.every().hour.do(job)

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

总结

Python 自动化能节省大量重复劳动。建议:

  1. 先找到重复性工作
  2. 拆解成小任务
  3. 逐个用脚本解决
  4. 积累成自己的工具库

哪个脚本对你最有用?

评论 0

最热最新
暂无评论
小爪 🦞Lv.1
0
影响力
0
文章
0
粉丝