Python编程实战 - Python实用工具与库 - 文件批量处理脚本

在实际开发、数据整理或办公自动化中,我们经常需要一次性处理大量文件,例如:

  • 批量重命名文件
  • 批量复制/移动文件
  • 批量压缩文件
  • 批量格式转换
  • 批量读取与写入文本内容

Python 的标准库中,osshutilglob 等模块可以轻松构建各种文件批处理脚本,是自动化办公与数据清洗的利器。

本章将从常见场景出发,通过示例脚本帮助你快速掌握文件批量处理能力。


一、基础库介绍

1. os 模块

提供文件路径、文件夹、新建/删除目录等操作。

常用方法:

  • os.listdir()
  • os.rename()
  • os.path.exists()
  • os.makedirs()
  • os.remove()

2. shutil 模块

执行高级文件操作:

  • 拷贝文件:shutil.copy()
  • 移动文件:shutil.move()
  • 拷贝整个文件夹:shutil.copytree()

3. glob 模块

使用通配符批量匹配文件,例如:

python 复制代码
glob.glob("*.txt")
glob.glob("images/*.jpg")

是处理大量文件时非常方便的模块。


二、批量重命名文件

例如:把文件名全部改为统一格式 img_001.jpg、img_002.jpg

python 复制代码
import os

folder = "images"

files = os.listdir(folder)

for i, filename in enumerate(files, start=1):
    old_path = os.path.join(folder, filename)
    ext = os.path.splitext(filename)[1]
    new_name = f"img_{i:03d}{ext}"
    new_path = os.path.join(folder, new_name)
    os.rename(old_path, new_path)

print("重命名完成。")

技术要点

  • os.path.splitext() 可获得文件扩展名
  • i:03d 生成 001、002 的数字序号

三、批量复制/移动文件

1. 批量复制

python 复制代码
import shutil
import glob

src_files = glob.glob("data/*.txt")
dst_folder = "backup"

os.makedirs(dst_folder, exist_ok=True)

for file in src_files:
    shutil.copy(file, dst_folder)

print("复制完成。")

2. 批量移动

python 复制代码
import shutil
import glob

for file in glob.glob("data/*.csv"):
    shutil.move(file, "csv_files")

print("移动完成。")

四、批量删除文件

例如,删除所有 .log 文件:

python 复制代码
import os
import glob

for file in glob.glob("logs/*.log"):
    os.remove(file)

print("删除完成。")

目录删除使用 shutil.rmtree("folder")


五、批量读取文本内容并写入汇总文件

比如,你有 100 个 .txt 日志文件,需要汇总到一个文件。

python 复制代码
import glob

files = glob.glob("logs/*.txt")

with open("summary.txt", "w", encoding="utf-8") as outfile:
    for file in files:
        with open(file, "r", encoding="utf-8") as f:
            outfile.write(f"=== 文件:{file} ===\n")
            outfile.write(f.read())
            outfile.write("\n\n")

print("汇总完成。")

六、批量修改文件内容(查找 + 替换)

在大量 .txt 文件中,将所有 "测试" 替换为 "正式"

python 复制代码
import glob

for file in glob.glob("docs/*.txt"):
    with open(file, "r", encoding="utf-8") as f:
        text = f.read()

    text = text.replace("测试", "正式")

    with open(file, "w", encoding="utf-8") as f:
        f.write(text)

print("批量替换完成。")

七、批量压缩文件(zipfile模块)

python 复制代码
import zipfile
import glob

files = glob.glob("data/*.csv")

with zipfile.ZipFile("data.zip", "w") as zipf:
    for file in files:
        zipf.write(file)

print("压缩完成。")

八、批量处理的实战案例:自动整理下载目录

下面给出一个实战脚本,把下载目录按文件类型分类:

python 复制代码
import os
import shutil
import glob

download_folder = "downloads"

file_types = {
    "图片": ["*.jpg", "*.png"],
    "视频": ["*.mp4"],
    "压缩包": ["*.zip", "*.rar"],
    "文档": ["*.pdf", "*.docx", "*.txt"]
}

for folder_name, patterns in file_types.items():
    target_folder = os.path.join(download_folder, folder_name)
    os.makedirs(target_folder, exist_ok=True)

    for pattern in patterns:
        for file in glob.glob(os.path.join(download_folder, pattern)):
            shutil.move(file, target_folder)

print("下载目录已整理完毕!")

执行后,文件会自动分类到各自目录,办公效率提升非常明显。


九、文件批处理脚本的最佳实践

  • 使用 glob 匹配大量文件更快
  • 写入文件前备份原文件
  • 对文件操作加入 try/except 防止脚本崩溃
  • 复杂任务建议封装成函数或类

示例:

python 复制代码
try:
    shutil.move(src, dst)
except Exception as e:
    print("移动失败:", e)

十、总结

本章你掌握了 Python 在文件自动化中的核心技能:

  • 批量重命名
  • 批量复制、移动、删除
  • 批量读取、写入和替换内容
  • 批量压缩
  • 使用 glob 进行文件匹配
  • 实战:自动整理下载目录

这些脚本结合日常办公场景,可以最大化提升工作效率,是每个 Python 工程师必须掌握的技能点。


相关推荐
zmzb01034 小时前
Python课后习题训练记录Day130
开发语言·python
码不停蹄的玄黓4 小时前
Spring Bean 生命周期
java·后端·spring
西安邮电大学4 小时前
分治算法详细讲解
java·后端·其他·算法·面试
老马聊技术5 小时前
AI对话功能之SpringBoot整合Vue3
vue.js·人工智能·spring boot·后端
高洁015 小时前
医疗行业的数字孪生革命
python·机器学习·数据挖掘·transformer·知识图谱
MATLAB代码顾问5 小时前
Python Pandas数据分析入门指南
python·数据分析·pandas
武子康5 小时前
调查研究-174 什么是“红丸主义“:它为什么吸引人,又为什么容易把人带偏?
后端
神奇小汤圆5 小时前
白嫖DeepSeek V4 Pro!免费无限用,还能接入Claude-Code
后端
风之所往_5 小时前
Python 3.6 新特性全面总结
python
码不停蹄的玄黓5 小时前
SpringBoot 全局异常处理器实现
java·spring boot·后端