大批量图片重命名

您所在的位置:网站首页 如何批量修改文件名称并排序 大批量图片重命名

大批量图片重命名

#大批量图片重命名| 来源: 网络整理| 查看: 265

利用python对大量图片进行重命名

不仅仅针对图片。如果要修改其他的格式,直接在18行修改相应的格式即可

# -*- coding:utf8 -*- import os class BatchRename(): ''' 批量重命名文件夹中的图片文件 ''' def __init__(self): self.path = 'D:\yolov4\yolov4-pytorch-master\VOCdevkit\VOC2007\demo' #表示需要命名处理的文件夹 def rename(self): filelist = os.listdir(self.path) #获取文件路径 total_num = len(filelist) #获取文件长度(个数) i = 1 #表示文件的命名是从1开始的 for item in filelist: if item.endswith('.png'): #初始的图片的格式为jpg格式的(或者源文件是png格式及其他格式,后面的转换格式就可以调整为自己需要的格式即可) src = os.path.join(os.path.abspath(self.path), item) dst = os.path.join(os.path.abspath(self.path), ''+str(i) + '.png')#处理后的格式也为jpg格式的,当然这里可以改成png格式 dst = os.path.join(os.path.abspath(self.path), '000' + format(str(i), '0>3s') + '.png') #这种情况下的命名格式为0000000.jpg形式,可以自主定义想要的格式 try: os.rename(src, dst) print ('converting %s to %s ...' % (src, dst)) i = i + 1 except: continue print ('total %d to rename & converted %d pngs' % (total_num, i)) if __name__ == '__main__': demo = BatchRename() demo.rename()

如果想要修改其他格式,仅仅需要在相应位置做一定的修改就可以!

2021.11.26更新:

为了方便大批量文件夹下的大批量文件进行命名,这里做了更加方便地程序更新:

 

import os class BatchRename(): ''' 批量重命名文件夹中的图片文件 ''' def __init__(self, n): self.n = n self.path = n+'/' # 这里是将此处的下一级目录创建为新的目录 def rename(self): filelist = os.listdir(self.path) # 获取文件路径 print(self.path) total_num = len(filelist) # 获取文件长度(个数) i = 1 # 表示文件的命名是从1开始的 for item in filelist: if item.endswith('.jpg'): # 初始的图片的格式为jpg格式的(或者源文件是png格式及其他格式,后面的转换格式就可以调整为自己需要的格式即可) src = os.path.join(os.path.abspath(self.path), item) dst = os.path.join(os.path.abspath(self.path), '' + str(i) + '.jpg') # 处理后的格式也为jpg格式的,当然这里可以改成png格式 dst = os.path.join(os.path.abspath(self.path), '00' + format(str(i), '0>3s') + '.jpg') # 这种情况下的命名格式为0000000.jpg形式,可以自主定义想要的格式 try: os.rename(src, dst) print('converting %s to %s ...' % (src, dst)) i = i + 1 except: continue elif item.endswith('.txt'): src = os.path.join(os.path.abspath(self.path), item) dst = os.path.join(os.path.abspath(self.path), '' + str(i) + '.txt') dst = os.path.join(os.path.abspath(self.path), '00' + format(str(i), '0>3s') + '.txt') try: os.rename(src, dst) print('converting %s to %s ...' % (src, dst)) i = i + 1 except: continue print('total %d to rename & converted %d pngs' % (total_num, i)) if __name__ == '__main__': filelist = os.listdir('G:\\test') ##获取当前text下里边的子目录 print(filelist) for item in filelist: ###遍历text下每一个子目录(1,2,3...) m = os.path.join('G:\\test', item) ###建立新的目录 for item in os.listdir('G:\\test\\%s'%item): ##遍历(1,2,3...)这些字目录的下一级目录的内容 n = os.path.join(m, item) ##创建新的目录 demo = BatchRename(n) demo.rename()

2021.11.29更新

最近在采集一个大型数据集,所以需要对大量文件夹和图片进行重命名,由于内容包含txt、jpg和txt三种形式,所以一定要保证按照原来的顺序对文件进行命名,博客上面给出的方案尽管可以实现单一格式的文件进行命名,但是在面临多种格式的文件时其命名结果会出现错误,所以这里我写出来了一个防止顺序出错的程序:

上代码!!

# 导入os包 import os def file_rename1(path, begin_num): """ @param path: 文件夹路径 @param begin_num: 起始命名数字 """ # 设定文件路径 i = begin_num # 对目录下的文件进行遍历 for file in os.listdir(path): dir = os.path.join(path, file) # print(dir) # 判断是否是文件 if os.path.isfile(os.path.join(path, file)) == True & file.endswith('.jpg'): # 设置新文件名 new_name = file.replace(file, "%d.jpg" % i) # 重命名 os.rename(os.path.join(path, file), os.path.join(path, new_name)) i += 1 print("End jpg") def file_rename2(path, begin_num): """ @param path: 文件夹路径 @param begin_num: 起始命名数字 """ # 设定文件路径 i = begin_num # 对目录下的文件进行遍历 for file in os.listdir(path): if os.path.isfile(os.path.join(path, file)) == True & file.endswith('.txt'): # 设置新文件名 new_name = file.replace(file, "%d.txt" % i) # 重命名 os.rename(os.path.join(path, file), os.path.join(path, new_name)) i += 1 # 结束 print("End txt") def rename00000(): path = r'./' filelist = os.listdir(path) ##获取当前路径下所有的子文件 # print(filelist) filetype = '.jpg' for file in filelist: # if type(file) == '.txt': Olddir = os.path.join(path, file) print(Olddir) if os.path.isdir(Olddir): ###判断路径是否为目录,如果是则跳过,目的是只命名那些没有子文件的独立文件 continue # os.path.splitext("path"):分离文件名与扩展名 filename = os.path.splitext(file)[0] filetype = os.path.splitext(file)[1] # zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0 Newdir = os.path.join(path, filename.zfill(5) + filetype) os.rename(Olddir, Newdir) print('jie shu') if __name__ == '__main__': path = './' file_rename1(path, 1) file_rename2(path, 1) rename00000()

2021.11.30更新,还是写清楚比较好!

为了只针对原始文件夹名字为(1,2,3,4,5···)的大批量重命名,有以下简单代码:

import os # import re # import sys path = r'./' filelist = os.listdir(path) ##获取当前路径下所有的子文件 # print(filelist) filetype = '.jpg' for file in filelist: # if type(file) == '.txt': Olddir = os.path.join(path, file) # print(Olddir) if os.path.isdir(Olddir): ###判断路径是否为目录,如果是则跳过,目的是只命名那些没有子文件的独立文件 continue # os.path.splitext("path"):分离文件名与扩展名 filename = os.path.splitext(file)[0] filetype = os.path.splitext(file)[1] # zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0 Newdir = os.path.join(path, filename.zfill(5) + filetype) os.rename(Olddir, Newdir)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3