写在前面:本地文件格式如下
Annotation文件夹下有许多子文件夹,子文件夹中是XML文件。
想要把所有文件放到一个labels文件夹中,并进行重命名。
代码如下:
import os
from shutil import copy
path="D:/Research direction/data set/DL data/VOCdevkit DL/VOC2007/Annotations" #原文件夹
out="D:/Research direction/data set/DL data/labels" #保存的文件夹地址
#获取文件列表
allfilelist=os.listdir(path) #获取子文件夹名
allfilelist.sort(key=lambda x: int(x[4:])) #第四个字符以后的字符串转化为数字并进行排序
# print(allfilelist)
# print(len(allfilelist))
index = 1
for file in allfilelist:
filepath = os.path.join(path, file)
img_names = os.listdir(filepath) #获取子文件夹中的文件名
img_names.sort(key=lambda x: int(x[:-4])) #倒数第五个字符以前的字符串转化为数字并进行排序
# print(img_names)
# 打印文件夹下的数量
# print(len(img_names))
# 循环读取文件,批操作文件名重命名
for item in img_names:
if item.endswith('.xml'): # 根据自己的文件格式修改
src_path = os.path.join(os.path.abspath(filepath), item)
dst_path = os.path.join(os.path.abspath(out), '' + str(index) + '.xml')
copy(src_path, dst_path)
index = index + 1
点击运行即可。
此方法保证了文件顺序不被改变,对于数据集的处理很好用。
参考:基于Python 从一个文件夹读取照片,修改尺寸后重命名存入另一个文件夹_CSDN@zxy的博客-CSDN博客python提升篇(十)---批量读取文件重命名_xyl666666的博客-CSDN博客python 递归获取子文件夹下的文件名 和文件类别标签_GREAT的博客-CSDN博客