批量重命名,命名规则为000000往下顺序增加,网上找到的脚本如下:
# -*- coding:utf-8 -*-import osdef getFiles(path, suffix):return [os.path.join(root, file) for root, dirs, files in os.walk(path) for file in files if file.endswith(suffix)]class Rename():def __init__(self, path, suffix):self.path = pathself.suffix = suffixdef rename(self):filelist = getFiles(self.path, self.suffix)total_num = len(filelist)i = 0for item in filelist:if item.endswith(self.suffix):src = os.path.join(os.path.abspath(self.path), item)dst = os.path.join(os.path.abspath(self.path), format(str(i), '0>6s') + self.suffix)os.rename(src, dst)print('converting %s to %s ...' % (src, dst))i = i + 1print('total %d to rename & converted %d jpgs' % (total_num, i))if __name__ == '__main__':root_path = r'F:\lianxi\lianxi\py\input'suffix = '.jpg'newname = Rename(root_path, suffix)newname.rename()
root_path = r’……’
文件夹根目录
suffix = ‘.jpg’
文件名以.jpg结尾
进入自己定义的Rename函数
进入定义的getFiles函数
def getFiles(path, suffix):return [os.path.join(root, file) for root, dirs, files in os.walk(path) for file in files if file.endswith(suffix)]
getFiles返回os.path.join(root, file) for root, dirs, files in os.walk(path) for file in files if file.endswith(suffix)
拆解看
os.path.join(’ E:\lianxi’,‘chap2’) 路径连接,得到E:\lianxi\chap2遍历路径 得到文件夹下所有文件(名称)(file)for root, dirs, files in os.walk(path) for file in files
root:根目录下所有文件夹路径 包括根目录自己
dirs:(遍历后 dir为) 文件夹(名称)
files:(遍历后 file为) 文件夹下子文件(名称)
file.endswith(suffix) 用于判断文件名称是否以suffix
结尾(参考endswith用法)
4.合在一起表达式 for 变量 in 列表 if 表达式
得到结果是:路径/文件名(.jpg)
回到rename函数
total_num = len(filelist)
得到filelist长度,即文件个数
此时filelist里包含所有所需要修改名称的文件(名及所在路径)
遍历出每个文件名同事进行修改。
i = 0for item in filelist:if item.endswith(self.suffix):src = os.path.join(os.path.abspath(self.path), item)dst = os.path.join(os.path.abspath(self.path), format(str(i), '0>6s') + self.suffix)os.rename(src, dst)print('converting %s to %s ...' % (src, dst))i = i + 1
拆解看
item为 每个文件(名及所在路径)
判断是否以suffix(.jpg)结尾
满足则
src = os.path.join(os.path.abspath(self.path), item)dst = os.path.join(os.path.abspath(self.path), format(str(i), '0>6s') + self.suffix)os.rename(src, dst)
参考.abspath(self.path)
src:连接绝对路径与文件(名及所在路径)
dst: 连接绝对路径与序号(格式)+文件后缀
str(i)即编号,‘0>6s’为(格式) 占6位即000000开始往下排
os.rename(src,dst)
另外一个批量重命名方法
split函数用法很重要参考split()函数的用法