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

作者:程序员爱钓鱼日期:2025/11/14

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

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

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 模块

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

1glob.glob("*.txt")
2glob.glob("images/*.jpg")
3

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


二、批量重命名文件

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

1import os
2
3folder = "images"
4
5files = os.listdir(folder)
6
7for i, filename in enumerate(files, start=1):
8    old_path = os.path.join(folder, filename)
9    ext = os.path.splitext(filename)[1]
10    new_name = f"img_{i:03d}{ext}"
11    new_path = os.path.join(folder, new_name)
12    os.rename(old_path, new_path)
13
14print("重命名完成。")
15

技术要点

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

三、批量复制/移动文件

1. 批量复制

1import shutil
2import glob
3
4src_files = glob.glob("data/*.txt")
5dst_folder = "backup"
6
7os.makedirs(dst_folder, exist_ok=True)
8
9for file in src_files:
10    shutil.copy(file, dst_folder)
11
12print("复制完成。")
13

2. 批量移动

1import shutil
2import glob
3
4for file in glob.glob("data/*.csv"):
5    shutil.move(file, "csv_files")
6
7print("移动完成。")
8

四、批量删除文件

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

1import os
2import glob
3
4for file in glob.glob("logs/*.log"):
5    os.remove(file)
6
7print("删除完成。")
8

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


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

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

1import glob
2
3files = glob.glob("logs/*.txt")
4
5with open("summary.txt", "w", encoding="utf-8") as outfile:
6    for file in files:
7        with open(file, "r", encoding="utf-8") as f:
8            outfile.write(f"=== 文件:{file} ===\n")
9            outfile.write(f.read())
10            outfile.write("\n\n")
11
12print("汇总完成。")
13

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

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

1import glob
2
3for file in glob.glob("docs/*.txt"):
4    with open(file, "r", encoding="utf-8") as f:
5        text = f.read()
6
7    text = text.replace("测试", "正式")
8
9    with open(file, "w", encoding="utf-8") as f:
10        f.write(text)
11
12print("批量替换完成。")
13

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

1import zipfile
2import glob
3
4files = glob.glob("data/*.csv")
5
6with zipfile.ZipFile("data.zip", "w") as zipf:
7    for file in files:
8        zipf.write(file)
9
10print("压缩完成。")
11

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

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

1import os
2import shutil
3import glob
4
5download_folder = "downloads"
6
7file_types = {
8    "图片": ["*.jpg", "*.png"],
9    "视频": ["*.mp4"],
10    "压缩包": ["*.zip", "*.rar"],
11    "文档": ["*.pdf", "*.docx", "*.txt"]
12}
13
14for folder_name, patterns in file_types.items():
15    target_folder = os.path.join(download_folder, folder_name)
16    os.makedirs(target_folder, exist_ok=True)
17
18    for pattern in patterns:
19        for file in glob.glob(os.path.join(download_folder, pattern)):
20            shutil.move(file, target_folder)
21
22print("下载目录已整理完毕!")
23

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


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

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

示例:

1try:
2    shutil.move(src, dst)
3except Exception as e:
4    print("移动失败:", e)
5

十、总结

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

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

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



Python编程实战 - Python实用工具与库 - 文件批量处理脚本》 是转载文章,点击查看原文


相关推荐


Arya - 功能强大的在线 Markdown 编辑器
修己xj2025/11/12

在当今信息爆炸的时代,Markdown 已成为写作、文档编写和内容创作的必备工具。今天我要向大家推荐一款功能强大、界面优美的在线 Markdown 编辑器——Arya(二丫)。 ScreenShot_2025-11-12_195419_427.png 项目简介 Arya 是一款基于 Vue2 和 Vditor 构建的现代化在线 Markdown 编辑器。它不仅具备了传统 Markdown 编辑器的所有基础功能,还集成了众多高级特性,让 Markdown 写作变得更加高效和愉悦。 该项目在git


Skip Fuse现在对独立开发者免费! -- 肘子的 Swift 周报 #0110
东坡肘子2025/11/11

📮 想持续关注 Swift 技术前沿? 每周一期《肘子的 Swift 周报》,为你精选本周最值得关注的 Swift、SwiftUI 技术文章、开源项目和社区动态。 📬 在 weekly.fatbobman.com 免费订阅 💬 加入 Discord 与中文 Swift 开发者深入交流 📚 访问 fatbobman.com 查看数百篇深度原创教程  一起构建更好的 Swift 应用!🚀 Skip Fuse现在对独立开发者免费! 在 Swift 社区发布官方 Android 版 SD


Vue SSR 深度解析:ssrProcessTeleport 的源码机制与实现原理
excel2025/11/9

在 Vue 3 的服务端渲染(SSR)编译阶段中,ssrProcessTeleport 是一个二次编译(second-pass)阶段的代码生成转换函数,用于处理 <teleport> 组件的服务端输出逻辑。 本文将深入剖析其设计目的、实现原理与编译链中的位置,并通过逐行注释展示源码的运行流程。 一、概念背景:SSR 与 Teleport 的特殊性 Teleport 的核心作用是在客户端渲染时允许开发者将某些内容渲染到 DOM 树的其他位置,例如: <teleport to="#modal">


单链表反转:从基础到进阶的完整指南
oioihoii2025/11/6

单链表反转是数据结构与算法中的经典问题,它不仅考察对链表结构的理解,也考验编程思维和技巧。本文将带你从基础实现到高级应用,全面掌握单链表反转。 1. 理解单链表 在深入反转算法之前,我们先回顾单链表的基本结构: class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next 单链表的特点是每个节点包含数据和指向下一个节点的指针,只能单向遍历。 2.


前端基础:从0到1实现简单网页效果(一)
<但凡.2025/11/1

目录 1、HTML 概述 2、HTML 的基本结构 3、HTML 常用标签 文本标签 链接与图片 列表 表格 表单 HTML5 新特性 HTML 与 CSS/JavaScript 的协作 HTML 开发工具 学习资源 4、HTML 标签拓展 结构标签 文本标签 链接与媒体标签 列表标签 表格标签 表单标签 元信息标签 语义标签 5、HTML 常用全局属性 表单相关属性 链接与媒体属性 事件处理属性 其他实用属性 6、HTML闭合与非闭合标签


大模型安全:从对齐问题到对抗性攻击的深度分析
鲁大猿2025/10/30

引言 随着大语言模型(LLM)在自然语言处理任务中展现出惊人能力,其安全性问题已成为学术界和工业界关注的焦点。大模型安全不仅关乎技术可靠性,更涉及伦理道德、社会影响和实际应用风险。本文从技术角度深入分析大模型面临的安全挑战及其解决方案。 一、大模型安全的多维框架 大模型安全可划分为三个层次:基础安全、对齐安全和应用安全。基础安全关注模型训练过程的稳定性;对齐安全确保模型行为与人类价值观一致;应用安全则针对具体部署场景中的风险。 从技术视角看,大模型安全的核心问题可归纳为: 价值对齐问题:如何将


Python 的内置函数 divmod
IMPYLH2025/10/27

Python 内建函数列表 > Python 的内置函数 divmod Python 的内置函数 divmod() 是一个实用的数学运算函数,它能够同时返回两个数值相除的商和余数。这个函数接受两个非复数数字作为参数,返回一个包含两个元素的元组,第一个元素是两数相除的商,第二个元素是余数。 def divmod(x, y): ''' 返回整数除法时的商和余数 :param x: 被除数 :param y: 除数 :return: 商和余数的元组


从LIS到全院区多活:浙江省人民医院“信创样板”全景复盘
oioihoii2025/10/25

2025年10月,浙江省人民医院(下称“浙人医”)宣布:LIS(检验信息系统)在越城、朝晖、望江山、富阳四大院区完成异构多活部署,实现RPO=0、RTO≤10 min的6级容灾,业务连续性99.99%,数据调用效率提升60%。这是国内首个多院区集团化医院在核心系统上线国产数据库并跑通异地多活的公开案例。 一、为什么先动LIS 业务高敏感:日均2.3万管标本,报告延迟直接影响门诊流速与住院手术排程。 体量可控:4TB数据、420个接口,既覆盖检验仪器、HIS、PACS,又不会出现一次性切换风险


Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
阿里云云原生2025/10/22

作者:孔可青 背景与挑战 1.1 行业背景:AI Agent 迈入规模化落地新阶段 随着生成式 AI 技术逐步成熟,AI Agent 已经越过技术炒作周期的峰值,进入大规模探索与产业落地的关键阶段。越来越多的企业开始将 AI Agent 应用于智能客服、自动化运营、辅助决策等核心业务场景,推动智能化升级。 在此背景下,Spring AI Alibaba 作为开源的 AI Agent 开发框架,致力于为 Java 生态开发者提供一套标准化、可扩展、生产就绪的开发体系。框架支持从基础 Agent 构


猿辅导Java面试真实经历与深度总结(一)
360_go_php2025/10/22

​  猿辅导Java面试 的文章,结构清晰、列出的几个核心问题,并附详细答案。文章既适合复习,也适合面试现场讲解。  ​编辑 猿辅导Java面试核心知识点解析 Java面试中,垃圾回收、锁机制以及高并发集合类是常考知识点。本文将结合实际面试题,系统讲解这些内容。 ---​编辑 一、垃圾收集器(Garbage Collector, GC) 概念:   垃圾收集器负责自动管理内存,回收无用对象,避免内存泄漏和程序崩溃。Java虚拟机中,垃圾收集器主要作用于堆内存。​编辑 常见垃圾收集器: Ser

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0