昨晚从网上下载了一堆的视频,但是视频的编号是1开始向后编的,用视频播放软件加载后,结果播放列表从前到后排列的竟然是1、10、100,这个时候播放就完全不成样子了,作为有强迫症的人来说,这个怎么能忍受呢,由于每个打包视频里面有个文本文件,有目录,所以马上打开python自己写个批量修改文件名的程序。代码如下:
import os
import re
print("批量修改程序开始\n按Q键退出")
path = 1
while path:
print("请输入指定路径:")
path = str(input())
if path == 'Q' or path == 'q' or len(path) == 0:
break
filelist = os.listdir(path)
lineNo = 0
for files in filelist:
Old = os.path.join(path,files)
filetype = os.path.splitext(files)[1]
filename = os.path.splitext(files)[0]
if filetype == '.txt':
opentxt = open(path +"\\"+files,'r')
result = list()
for line in opentxt.readlines():
line = line.strip()
if not len(line):
continue
Pattern = re.compile(r'第(.*?)节(.*)',re.S)
Items = re.findall(Pattern, line)
lineDeal = []
for item in Items:
if item[0].isdigit():
lineDeal='第%03d节%s'%(int(item[0]),item[1])
result.append(lineDeal)
else:
lineDeal='第%s节%s'%(item[0],item[1])
result.append(lineDeal)
opentxt.close()
else:
if filename.isdigit():
fileNo = ('%03d'%(int(filename)))
if fileNo != filename:
New = os.path.join(path,str(fileNo)+filetype)
os.rename(Old,New)
filelist = os.listdir(path)
for files in filelist:
Old = os.path.join(path,files)
filetype = os.path.splitext(files)[1]
filename = os.path.splitext(files)[0]
if filetype != '.txt':
New = os.path.join(path,str(result[lineNo])+filetype)
os.rename(Old,New)
lineNo +=1
代码写得很粗。
中间出了些小问题:
1.读txt每行数据时,最开始没把全路径加上,中间一直报错,后来改了全路径就好了。
2.第二段将数字文件名依次替换为文本文件内的每一行时,最开始没把filelist从path开始,导致程序一运行,第一次会报错,最开始以为是第一个循环执行完后要等待一会儿,用了等待time.sleep()和后面的system('pause')都不行,才认识到是第一次循环结束后,path已经循环到路径最末端了,运行当然会报错。