批量重命名B站下载文件
将B站下载的文件统一修改文件名
事情来由
事情是这样的,我在B站上发现一个教程,看了一下,非常不错,于是想下载下来(免得B站和谐)。
问题就是这样来了,我手机没多少内存,下载后下发现文件在手机中都是以数字命名的,所以我就将文件拖到手机进行批量修改名
其数字命名是以其里面的P数的安排命的,1,2,3就是第1P,第2P,第3P的意思
基本思路
一、 获取文件夹内的所有文件夹名
二.、对获取的文件名进行排序
path = input("输入文件夹的绝对路径:")
directory_name = os.listdir(path)
bili_name = [int(i) for i in directory_name]
bili_name.sort()
三、将预先准备替换的文件名进行读入
四、 处理不合法的文件名(空格,特殊符号等)
使用re
模块的split
方法进行划分,原生的split
只支持单一字符,re.split()
可支持多个字符,以|
分开即可
# head 是己预先弄好的文件名,格式在最后会放出来
with open('head', 'r') as file:
content = file.read()
content_name = content.split('\n')
destination_name = ["".join(re.split('\s|\(\)|\?', i)) for i in content_name]
五、开始处理
for index, value in enumerate(bili_name):
source_path = os.path.join(path, str(value))
destination_path = os.path.join(path, str(destination_name[index]))
os.system('mv ' + source_path + " " + destination_path)
完整代码,效果图
path = input("输入文件夹的绝对路径:")
directory_name = os.listdir(path)
bili_name = [int(i) for i in directory_name]
bili_name.sort()
with open('head', 'r') as file:
content = file.read()
content_name = content.split('\n')
destination_name = ["".join(re.split('\s|\(\)|\?', i)) for i in content_name]
for index, value in enumerate(bili_name):
source_path = os.path.join(path, str(value))
destination_path = os.path.join(path, str(destination_name[index]))
os.system('mv ' + source_path + " " + destination_path)