6.1 剧集批量重命名
6.1.1 场景
通常,在线下载的剧集来源不同,文件命名五花八门,需要重新命名,整理到相应给文件夹中。当剧集比较多时, 手工命名比较麻烦,常规的解决方式是:安装批量命名软件,实现批量命名。然而,网上很多批量命名软件来源复杂,功能参差不齐,安装后往往需要注册激活,问题很多。因此,很有必要通过Python代码实现这些功能,避免这些问题。
6.1.2 功能需求
Python编程需要实现2个功能:
-
剧集的批量重命名
-
剧集存放到指定的文件夹内(文件夹命名:剧集名/季)
6.1.3 原理
程序包:
-
os 是Python内置的程序包,主要功能是文件和文件夹的创建、命名等操作。
-
shutil 是Python内置程序包,主要功能是文件的移动等操作。
实现流程:
-
设定文件批量命名的替换参数(每次命名前修改)
-
定义重命名rename()函数,实现功能如下:
-
根据剧集名/季,生成指定的文件夹
-
os.listdir()获取文件夹内所有文件名,生成列表
-
使用for循环和os.rename(),批量替换原文件名中无关部分,实现重命名
-
使用shutil.move(),将命名后的文件批量移动到指定的文件夹。
-
-
调用重命名函数rename(),完成批量命名和文件移动。
6.1.4 代码
# 剧集批量重命名
# 导入程序包
import os
import shutil
# 参数修改区
# 假定剧集名为:BBC.Africa.2013.EP01.BluRay.1080p.3Audio.DTS-HD.MA.5.1.x265.10bit-ALT
name = "非洲" # 设定剧集名
season = "S01" # 设定季
filename_head = "BBC.Africa.2013.EP" # 设定剧集名前半部
filename_tail = ".BluRay.1080p.3Audio.DTS-HD.MA.5.1.x265.10bit-ALT" # 设定剧集名后半部
path_raw = r"W:\0.Download\0.TV\待处理" # 设定待命名剧集的路径
path_dest = r"W:\0.Download\0.TV" # 设定剧集最终存放路径
# 定义命名函数
def rename(name, season, filename_head, filename_tail):
path1 = path_dest + "\\" + name # 设定已命名剧集路径
path2 = path1 + "\\" + season # 设定已命名剧集的季路径
os.mkdir(path1) # 生成已命名剧集文件夹
os.mkdir(path2) # 生成已命名剧集的季文件夹
os.chdir(path_raw) # 选择待命名剧集路径
file_list0 = os.listdir(path_raw) # 获取该路径文件名列表
print("原始文件名列表是:", file_list0)
replace_head = name + "." + season + "E" # 设定命名参数:head
replace_tail = "" # 设定命名参数:tail
for file0 in file_list0:
os.rename(file0, file0.replace(filename_head, replace_head)) # 替换文件头:head
file_list1 = os.listdir(path_raw) # 重新获取该路径文件名列表
for file1 in file_list1:
os.rename(file1, file1.replace(filename_tail, replace_tail)) # 替换文件尾:tail
file_list2 = os.listdir(path_raw) # 重新获取该路径文件名列表
print("最终文件名列表是:", file_list2)
for file2 in file_list2:
shutil.move(path_raw + "\\" + file2, path2) # 移动所有文件到目标文件夹
print("命名完成,文件已经移动到目标文件夹。")
return
# 调用函数
rename(name, season, filename_head, filename_tail)
6.1.5 代码使用
-
根据剧集信息,修改参数:
name
,season
,filename_head
,filename_tail
-
设定剧集待命名目录,并修改参数:
path_raw
-
设定剧集最终存放目录,并修改参数:
path_dest
-
确保待命名目录内只有待命名剧集,没有其他文件。
-
运行上述代码,获得运行成功提示。
-
打开剧集最终存放目录,查看是否成功命名。