写在前面:本地文件格式如下
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博客