本文介绍: 高效的将两个文件夹中多余的文件删除

高效的将两个文件夹中多余的文件删除

之前使用的是这个方法,但是图像太多,需要删除的有70W张,得删10多天。。

将两个文件夹中重复的图象删除

在这里插入图片描述
在这里插入图片描述

解决方案

先将image图像复制一份,然后改名为txt

import os

def change_file_extension(path, old_ext, new_ext):
    for root, dirs, files in os.walk(path):
        for file in files:
            if file.endswith(old_ext):
                old_file = os.path.join(root, file)
                new_file = os.path.splitext(old_file)[0] + new_ext
                os.rename(old_file, new_file)

# 示例:将路径为 "C:test" 下所有 .txt 文件后缀修改为 .md
change_file_extension("D:datasetimage\1", ".jpg", ".txt")

在这里插入图片描述

这下图片标签名称一样了,对比找出image中多的文件名,并写入txt文件

import os
import codecs
# 指定两个文件夹路径
folder1 = r'D:datasetimage1'
folder2 = r'D:datasetann'

# 获取文件夹1中所有文件文件名  (这里场景jpg)
files1 = set(os.listdir(folder1))

# 获取文件夹2中所有文件文件名  (这里场景txt)
files2 = set(os.listdir(folder2))



# 计算出缺少的文件,即在文件夹1中出现但不在文件夹2中出现的文件
missing_files = files1 - files2

#将缺少的文件保存txt
path=  'D:codeyolov8-pytorch-master\needRM.txt'
lt = open(path, "w")

# 打印缺少的文件名
print("缺少的文件:")
for file in missing_files:
    print(file)
    lt.writelines(file + 'n')  # 每个元素空格间隔一行元素写完并换行

在这里插入图片描述
在这里插入图片描述
读取needRM.txt文件,将后缀改回jpg

import codecs
import os

path = 'D:/code/yolov8-pytorch-master/needRM.txt'  # 标签文件train路径
newpath = 'D:/code/yolov8-pytorch-master/needRMNew.txt'  # 标签文件train路径

file = open(path, "r", encoding="utf8")
txt = file.read()
a = txt.replace(".txt", ".jpg")  # read默认内容读出来是字符串格式
file.close()  # 这一步必须关闭
file = open(newpath, "w", encoding='utf8')
file.write(a)  # 把修改后的a写入文件
file.close()

在这里插入图片描述

这样就得到了需要删除文件的文件名了(都保存在这个txt文件中)

在按照文件名删除Image文件夹下多余的文件

import os

# 将待删除文件夹图片路径补全
file = open(r"D:codeyolov8-pytorch-masterneedRMNew.txt", "r")
list1 = file.readlines()
for i in list1:
    i = i.strip('n')
    delPath = "D:datasetimage\1\"+i
    print("remove pic:  "+ delPath, end="n")
    os.remove(delPath)
file.close()



在这里插入图片描述

完成!
在这里插入图片描述

较之前的方法改进在于
之前是双重遍历时间复杂度
现在直接使用set找出不重复的,时间复杂度降低

使用Python批量修改文件名后缀

python对比两个文件夹中不同的文件

python之文件操作、对.txt文本文件的操作(读、写、修改、复制、合并)、对json文本文件的操作、json字符串与字典的相互转换。

原文地址:https://blog.csdn.net/qq_41701723/article/details/134691848

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_29296.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注