批量修改文件名

昨晚从网上下载了一堆的视频,但是视频的编号是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已经循环到路径最末端了,运行当然会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值