要对比目录下的jpg文件与json文件,并删除那些没有对应json文件的jpg文件,这个在深度学习或者机器学习时常会遇到。比如对一个数据集做处理时,往往会有些图像不用标注,那么这张图像是没有对应的标签文件的,这个时候又不想这些没有标注的图像文件占用了空间,所以则要删除掉没有标签对应的图像文件。
步骤概述
- 读取目录中的文件列表:首先需要列出目录下所有的文件,通常可以通过文件系统API来实现。
- 分离文件扩展名:对于每个jpg文件,需要获取其文件名并分离出扩展名,以便与json文件进行比较。
- 对比文件名:将jpg文件的文件名(不包含扩展名)与json文件名进行对比,查找是否存在对应的json文件。
- 删除无对应文件:如果发现某个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}")