与上一篇文章相似,只不过上一篇文章是对单个分类做json文件的提取,这篇文章是遍历了所有的分类后,自动做的json文件提取。
下图是分类好的图片对应的文件夹,打开后是对应的图片:
与上一篇文章单个分类的json提取相比,只不过多了一部对图片分类路径的提取以及在各分类下创建各自的json文件夹用来存放json文件。
具体详情请大家参考上面的链接。
以下是结果展示:
(1)在每一个分类下创建的json 文件夹:
(2)分类好后的json文件
代码展示:
import os
import shutil
def main():
path="C:/Users/86187/Desktop/220kv - 副本/分类数据集/" #分类文件夹前的目录
list = os.listdir(path)
for i in range(len(list)):
k = 1
base_path = path + list[i] + "/"
# base_path = 'C:/Users/86187/Desktop/220kv - 副本/分类数据集/油污/'
piclist = os.listdir(base_path) # filelist是json文件夹下面的json文件名(包括扩展名)
# os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 ‘.’ 和’…’即使它在文件夹中。
print(len(piclist)) # 输出pic文件的数目
json_path = 'C:/Users/86187/Desktop/220kv - 副本/Annotations/' # 想要移动文件所在的根目录
jsonlist = os.listdir(json_path)
jpg1_path = base_path + "json/" # 创建移动后的文件夹
os.mkdir(jpg1_path)
for name in piclist:
# os.path.splitext(“文件路径”) 分离文件名与扩展名;默认返回(fname,fextension)元组,可做分片操作
filename = os.path.splitext(name)[0]
# filename_suffix = os.path.splitext(name)[1]
for name1 in jsonlist:
jsonname = os.path.splitext(name1)[0] # 文件名
jsonname_suffix = os.path.splitext(name1)[1] # 扩展名
fullname = json_path + jsonname + jsonname_suffix # 原文件的全部路径名
if "-" in jsonname:
jsonname = jsonname.split('-', 1)[0]
if filename == jsonname: # 判断是否相等
shutil.copy(fullname, jpg1_path)
print('移动成功')
k += 1
else:
continue
print(k)
if __name__ == '__main__':
main()