Python脚本批量重命名图片
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 23 13:34:59 2021
@author: 洋洋
"""
# -*- coding:utf8 -*-
import os
class BatchRename():
'''
批量重命名文件夹中的图片文件
'''
def __init__(self):
self.path = 'E:/models/research/object_detection/images/test' #存放图片的文件夹路径
def rename(self):
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 1
for item in filelist:
if item.endswith('.jpg'): #图片格式为jpg
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), str(i) + '.jpg') #设置新的图片名称 str(i)前面可以加上字符串
try:
os.rename(src, dst)
print ("converting %s to %s ..." % (src, dst))
i = i + 1
except:
continue
print ("total %d to rename & converted %d jpgs" % (total_num, i))
if __name__ == '__main__':
demo = BatchRename()
demo.rename()
保存rename.py文件,然后运行就可以重命名
将图片批量命名为6位数的名字
# -*- coding:utf8 -*-
import os
class BatchRename():
'''
批量重命名文件夹中的图片文件
'''
def __init__(self):
# 我的图片文件夹路径
self.path = 'C:/Users/洋洋/Desktop/images/test'
def rename(self):
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 1
n = 6
for item in filelist:
if item.endswith('.jpg'):
n = 6 - len(str(i))
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), str(0) * n + str(i) + '.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 jpgs' % (total_num, i))
if __name__ == '__main__':
demo = BatchRename()
demo.rename()
jpg和标注数据xml同时重命名
#!usr/bin/python
# -*- coding:utf-8 -*-
import os
import xml.etree.ElementTree as ET
import xml.dom.minidom
# 获取文件夹中bmp图片的数量
def getDirImageNum(path):
bmpDirImagesNum = 0
for bmpfile in os.listdir(path):
if os.path.splitext(bmpfile)[1] == '.bmp':
bmpDirImagesNum += 1
return bmpDirImagesNum
# 获取文件夹中xml文件的数量
def getDirXmlNum(path):
xmlDirXmlNum = 0
for xmlfile in os.listdir(path):
if os.path.splitext(xmlfile)[1] == '.xml':
xmlDirXmlNum += 1
return xmlDirXmlNum
def rename(inputpath,outpath):
filelist = os.listdir(inputpath) # 获取文件路径
i = getDirImageNum(outpath) # 表示bmp文件的命名是从当前输出文件夹中的bmp文件数目开始的
j = getDirXmlNum(outpath) # 表示xml文件的命名是从当前输出文件夹中的xml文件数目开始的
for item in filelist:
if item.endswith('.bmp'): # 初始的图片的格式为bmp格式的(或者源文件是png格式及其他格式,后面的转换格式就可以调整为自己需要的格式即可)
src = os.path.join(os.path.abspath(inputpath), item) #
dst = os.path.join(os.path.abspath(outpath), '0' + format(str(i), '0>3s') + '.bmp') # 这种情况下的命名格式为0000.bmp形式,可以自主定义想要的格式
try:
os.rename(src, dst)
print ('converting %s to %s ...' % (src, dst))
i = i + 1
except:
continue
if item.endswith('.xml'): #初始的图片的格式为xml格式的
src2 = os.path.join(os.path.abspath(inputpath), item)
dst2 = os.path.join(os.path.abspath(outpath), '0' + format(str(j), '0>3s') + '.xml') # 这种情况下的命名格式为0000.xml形式,可以自主定义想要的格式
try:
# 读取xml文件
dom = xml.dom.minidom.parse(src2)
root = dom.documentElement
# 获取标签对path之间的值并赋予新值j
root.getElementsByTagName('path')[0].firstChild.data = dst2
# 获取标签对filename之间的值并赋予新值j
root.getElementsByTagName('filename')[0].firstChild.data = '0' + format(str(j), '0>3s') + '.xml'
# 将修改后的xml文件保存,xml文件修改前后的路径
# 打开并写入
with open(src2, 'w') as fh:
dom.writexml(fh)
os.rename(src2, dst2)
print ('converting %s to %s ...' % (src2, dst2))
j = j + 1
except:
continue
if __name__ == '__main__':
inputPath = 'C:\\Users\\Zhangwei\\Desktop\\images' # 表示需要命名处理的文件夹
outPath = 'C:\\Users\\Zhangwei\\Desktop\\data' # 表示重命名后输出的文件夹
for root, dirs, files in os.walk(inputPath):
for file in files:
rename(root,outPath)
参考博客:
https://blog.csdn.net/lwplwf/article/details/78368229
https://blog.csdn.net/zichen_ziqi/article/details/84970497?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162021864016780274154811%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162021864016780274154811&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-1-84970497.nonecase&utm_term=%E5%9B%BE%E7%89%87%E6%96%87%E4%BB%B6%E5%92%8C%E6%A0%87%E6%B3%A8%E6%96%87%E4%BB%B6xml%E5%90%8C%E6%97%B6%E9%87%8D%E5%91%BD%E5%90%8D
542




被折叠的 条评论
为什么被折叠?



