9.7. 批量文件重命名

9.7.1. 代码示例

#!/usr/bin/env python
#-*- coding:utf8 -*-
import os
perfix = "python"               #perfix为重命名后的文件起始字符
length = 2                      #length为除去perfix后,文件名要达到的长度
base = 1                        #文件名的起始数
format = 'mdb'                  #文件名的后缀名
def PadLeft(str,num,padstr):
    stringlength = len(str)
    n = num - stringlength
    if n >= 0:
        str = padstr * n + str
    return str

#为了避免误操作,这里先提示用户
print("the files in {} will be renamed ".format(os.getcwd()))
all_files = os.listdir(os.getcwd())
print("输出当前目录下的所有文件名")
print([f for f in all_files if os.path.isfile(f)])
input_stin = input("press y to continue\n")      #获取用户输入
if input_stin.lower() != "y":           #判断用户输入,已决定是否执行重命名操作
    exit()
filenames = os.listdir(os.getcwd())     #获取当前目录中的内容
#基数减1,为了下面i = i + 1 在第一次执行时等于基数
i = base - 1
for filename in filenames:
    i +=1
    #判断当前路径是否为文件,并且不是"rename.py"
    if filename != "rename.py" and os.path.isfile(filename):
        name = str(i)           #将i转换成字符
        name = PadLeft(name,length,'0') #将name补全到指定长度
        t = filename.strip('.')         #分割文件名,以检查其是否是所要修改的类型
        m = len(t)
        if format == "":
            os.rename(filename,perfix+name+"."+t[m-1])
        else:
            if t[m-1] == format:
                os.rename(filename,perfix+name+'.'+t[m-1])
            else:
                i = i -1        #保证i连续
    else:
         i = i -1
all_files = os.listdir(os.getcwd())
print([f for f in all_files if os.path.isfile(f)])  #输出当前目录下的所有文件名