一、前言
提示:类似下面这种情况,图片和标签文件混在一起:
–
二、代码
import os
import shutil
def split(src, img, annota):
imges = [] # 存储所有图片的路径
annotation = [] # 存储所有xml的路径
# 第一步:遍历需要分离的文件夹
for f in os.listdir(src):
if f.endswith(".bmp"): #可以是.jpg,.png,.jpeg等等
imges.append(f)
if f.endswith(".xml"): #可以是json文件或者xml文件
annotation.append(f)
# 第二步:创建目标图片文件夹和xml文件夹
if not os.path.isdir(img): # 如果目标图片文件夹不存在
os.mkdir(img)
if not os.path.isdir(annota): # 如果目标xml文件夹不存在
os.mkdir(annota)
# 第三步:转移到目标文件夹中
for im in imges: # 遍历所有的图片,将图片文件转移到目标文件夹中
new_path = os.path.join(src, im)
print(new_path)
shutil.copy(new_path, img)
for ann in annotation: # 遍历所有的xml,将xml文件转移到目标文件夹中
new_path = os.path.join(src, ann)
print(new_path)
shutil.copy(new_path, annota)
if __name__ == "__main__":
point = "D:/data/" # 相对路径
SrcDir = "xiangsanye" # 需要分离的文件
dicimg = "tian/image" # 目标图片文件
dicann = "tian/mask" # 目标的xml文件
src = os.path.join(point, SrcDir)
imges = os.path.join(point, dicimg)
annoations = os.path.join(point, dicann)
split(src, imges, annoations)