批量重命名,命名规则为000000往下顺序增加,网上找到的脚本如下:
# -*- coding:utf-8 -*-
import os
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)]
class Rename():
def __init__(self, path, suffix):
self.path = path
self.suffix = suffix
def rename(self):
filelist = getFiles(self.path, self.suffix)
total_num = len(filelist)
i = 0
for 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
print('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 = 0
for 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)
src:连接绝对路径与文件(名及所在路径)
dst: 连接绝对路径与序号(格式)+文件后缀
str(i)即编号,‘0>6s’为(格式) 占6位即000000开始往下排
另外一个批量重命名方法
split函数用法很重要参考split()函数的用法