要对比目录下的jpg文件与json文件,并删除那些没有对应json文件的jpg文件,这个在深度学习或者机器学习时常会遇到。比如对一个数据集做处理时,往往会有些图像不用标注,那么这张图像是没有对应的标签文件的,这个时候又不想这些没有标注的图像文件占用了空间,所以则要删除掉没有标签对应的图像文件。

步骤概述

  1. 读取目录中的文件列表:首先需要列出目录下所有的文件,通常可以通过文件系统API来实现。
  2. 分离文件扩展名:对于每个jpg文件,需要获取其文件名并分离出扩展名,以便与json文件进行比较。
  3. 对比文件名:将jpg文件的文件名(不包含扩展名)与json文件名进行对比,查找是否存在对应的json文件。
  4. 删除无对应文件:如果发现某个jpg文件没有对应的json文件,则执行删除操作。

示例代码(Python)

import os

directory = '/path/to/directory'

# 获取目录下所有文件和文件夹的列表
files = os.listdir(directory)

# 创建一个空列表来存储需要删除的jpg文件
jpg_files_to_delete = []

# 遍历文件列表
for file in files:
    # 检查文件是否为jpg格式
    if file.lower().endswith('.jpg'):
        # 分离文件名和扩展名
        file_name = os.path.splitext(file)[0]
        # 检查是否存在同名的json文件
        if not os.path.exists(f"{directory}/{file_name}.json"):
            # 如果不存在,则添加到删除列表
            jpg_files_to_delete.append(file)

# 删除所有没有对应json文件的jpg文件
for file in jpg_files_to_delete:
    file_path = os.path.join(directory, file)
    try:
        os.remove(file_path)
        print(f"已删除文件:{file_path}")
    except OSError as e:
        print(f"删除文件时出错:{file_path},错误信息:{e}")

深度学习数据处理——对比标签文件与图像文件,把没有打标签的图像文件标记并删除-LMLPHP

04-19 14:11