在处理一个分类数据集时,遇到了数据集命名不规范的问题,该数据集有10000多张图片,一个一个改费时费力,所以我去网上查找资料,并改写出一个用python实现文件批量重命名的方法。
代码详情:
import os
path_list = ['文件夹名1', '文件夹名2','......']
def rename():
total = 0
for pl in path_list:
path = '需要修改文件的路径' +"/"+pl
name = pl # 重命名名字开头
startNumber = '1' # 开始的数字
fileType = '.jpg' # 可以换成其他格式,如png
print("正在生成以"+name+startNumber+fileType+"迭代的文件名")
filelist = os.listdir(path)
count = 0
for files in filelist:
Olddir = os.path.join(path, files)
if os.path.isdir(Olddir):
continue
Newdir = os.path.join(path, name+str(count+int(startNumber))+fileType)
os.rename(Olddir, Newdir)
count += 1
total = total +count
print(pl+"文件夹处理了"+str(count)+"个文件")
print("总共处理了"+str(total)+"个文件")
if __name__ == "__main__":
rename()
操作方法:
将路径改为需要修改的文件路径,将需要重命名的文件夹写入path_list中,如图所示:
import os
path_list = ['airport_inside', 'artstudio']
def rename():
total = 0
for pl in path_list:
path = 'F:\datasets\indoor' +"/"+pl
name = pl # 重命名名字开头
startNumber = '1' # 开始的数字
fileType = '.jpg' # 可以换成其他格式,如png
print("正在生成以"+name+startNumber+fileType+"迭代的文件名")
filelist = os.listdir(path)
count = 0
for files in filelist:
Olddir = os.path.join(path, files)
if os.path.isdir(Olddir):
continue
Newdir = os.path.join(path, name+str(count+int(startNumber))+fileType)
os.rename(Olddir, Newdir)
count += 1
total = total +count
print(pl+"文件夹处理了"+str(count)+"个文件")
print("总共处理了"+str(total)+"个文件")
if __name__ == "__main__":
rename()
这里我只修改了两个文件夹里的文件,运行结果如下:
记得不要同样的程序运行两次,不然会出现修改命名失败的问题(因为会命名重复)。