影视剧文件下载后常出现命名不规范的问题,比如包含下载站广告、剧集序号格式不统一、缺失集数标识等情况,手动逐个重命名效率低且容易出错。通过Python编写脚本可以实现批量自动化处理,快速完成文件标准化管理。

实现批量重命名的核心思路
整个流程主要分为四个步骤:首先遍历目标文件夹下的所有影视文件,然后提取每个文件名中的剧集关键信息,接着按照预设的标准格式生成新文件名,最后调用系统接口完成文件重命名操作。其中信息提取环节需要用到正则匹配,重命名操作依赖Python的os模块。
需要用到的Python模块
- os模块:用于遍历目录、获取文件路径、执行重命名操作,是文件处理的核心模块
- re模块:用于编写正则表达式,从混乱的原文件名中提取剧集名称、集数等有效信息
- shutil模块:可选模块,若需要移动文件到分类目录可以使用该模块实现
完整实现代码
以下是可直接运行的批量命名脚本,支持提取常见格式的影视剧集数,统一命名为「剧名_S01E01.mp4」的格式:
import os
import re
def batch_rename_video_files(folder_path, series_name):
# 遍历目标文件夹下的所有文件
for filename in os.listdir(folder_path):
# 只处理常见视频格式文件
if not filename.lower().endswith(('.mp4', '.mkv', '.avi', '.rmvb')):
continue
# 获取文件的完整路径
old_path = os.path.join(folder_path, filename)
# 正则匹配提取集数,支持匹配第X集、E01、01集等常见格式
episode_pattern = re.compile(r'(?:第(d+)集|E(d+)|[_s](d+)[_s]|EP(d+))', re.IGNORECASE)
match = episode_pattern.search(filename)
if not match:
print(f"文件 {filename} 未匹配到集数,跳过处理")
continue
# 提取匹配到的集数,处理不同正则组的匹配结果
episode_num = None
for group in match.groups():
if group:
episode_num = group.zfill(2) # 集数补零到两位
break
if not episode_num:
continue
# 生成新文件名,格式为 剧名_S01E集数.原后缀
file_ext = os.path.splitext(filename)[1]
new_filename = f"{series_name}_S01E{episode_num}{file_ext}"
new_path = os.path.join(folder_path, new_filename)
# 执行重命名
try:
os.rename(old_path, new_path)
print(f"重命名成功:{filename} -> {new_filename}")
except Exception as e:
print(f"重命名失败 {filename},错误原因:{e}")
if __name__ == "__main__":
# 配置目标文件夹路径和剧集名称
target_folder = r"D:影视资源待整理剧集"
series_name = "某某电视剧"
batch_rename_video_files(target_folder, series_name)
代码关键部分说明
正则匹配规则设计
代码中使用的正则表达式(?:第(d+)集|E(d+)|[_s](d+)[_s]|EP(d+))可以覆盖大部分常见的集数标识格式:
- 匹配「第X集」格式,比如「第12集」提取12
- 匹配「E01」格式,比如「E03」提取03
- 匹配前后有下划线或空格的数字格式,比如「_05_」「 08 」提取对应数字
- 匹配「EP12」格式,提取12
异常处理说明
脚本中加入了两个异常处理逻辑:一是跳过无法匹配集数的文件,避免程序中断;二是捕获重命名时的系统异常,比如文件被占用、权限不足等情况,会输出错误提示而不影响其他文件处理。
使用注意事项
- 运行脚本前建议先备份原文件,避免重命名错误导致文件无法识别
- 如果目标文件夹下有多种不同剧集,需要先按剧集分类到不同子文件夹,再分别运行脚本
- 若原文件名中的集数格式比较特殊,需要调整正则表达式的匹配规则适配
- Windows系统下路径建议使用原始字符串,避免反斜杠转义问题
扩展优化方向
如果需要更完善的功能,可以在现有基础上扩展:比如增加自动识别剧集名称的功能,不需要手动传入剧名参数;增加按季数分类的逻辑,自动将不同季的文件移动到对应子目录;增加文件名去重逻辑,避免重命名后出现同名文件覆盖问题。