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

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

  • 解决方案

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

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

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

解决方案

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

import osdef 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_extos.rename(old_file, new_file)# 示例:将路径为 "C:\test" 下所有 .txt 文件的后缀修改为 .md
change_file_extension("D:\dataset\image\\1", ".jpg", ".txt")

在这里插入图片描述

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

import os
import codecs
# 指定两个文件夹的路径
folder1 = r'D:\dataset\image\1'
folder2 = r'D:\dataset\ann'# 获取文件夹1中所有文件的文件名  (这里的场景是jpg)
files1 = set(os.listdir(folder1))# 获取文件夹2中所有文件的文件名  (这里的场景是txt)
files2 = set(os.listdir(folder2))# 计算出缺少的文件,即在文件夹1中出现但不在文件夹2中出现的文件
missing_files = files1 - files2#将缺少的文件保存到txt中
path=  'D:\code\yolov8-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 ospath = '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:\code\yolov8-pytorch-master\needRMNew.txt", "r")
list1 = file.readlines()
for i in list1:i = i.strip('\n')delPath = "D:\dataset\image\\1\\"+iprint("remove pic:  "+ delPath, end="\n")os.remove(delPath)
file.close()

在这里插入图片描述

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记:Confidential Assets

Confidential Assets 描述了一种称为“保密交易”的方案,该方案模糊了所有UTXO的金额,同时保持了不创建或销毁硬币的公共可验证性。进一步将此方案扩展到“保密资产”,一种单一的基于区块链的分类帐可以跟踪多种资产类型的方案。将保密交易扩…

Vue3-toRef 和 toRefs 函数

Vue3-toRef 和 toRefs 函数 功能:可以简化语法调用。toRef 函数执行时会生成一个对象 ObjectRefImpl ,是一个引用对象,具有value属性(getter 和 setter 属性)语法格式:toRef(对象名, 对象中的属性名) toRe…

Attention机制(笔记)

参考:2.3.2注意力机制-part1_哔哩哔哩_bilibili 什么是attention? 答:注意力放在事物最有辨识度的部分 attention计算机制: 为什么用这个公式可以得到attention? 补充说明(chatGPT给出的解释)&…

sql关联另一个表,update表的值

sql示例: update student_score ss set ss.names.name from student s where ss.codes.code 最常见的学生成绩表 student_score通过学生student_code关联学生信息表student 学生信息表(student): code name age gender 1001 …

优先队列经典例题leetcode思路代码详解

目录 leetcode215题.数组中的第k个最大元素 leetcode347题.前k个高频元素 leetcode295题.数据流的中位数 对优先队列感兴趣的朋友可以去看我上一篇文章。 优先队列基础讲解-CSDN博客 leetcode215题.数组中的第k个最大元素 215. 数组中的第K个最大元素 - 力扣(…

值得收藏的15 个好用的 iPad/iPhone 数据恢复工具

有时您需要从移动或平板设备恢复关键数据。 许多人已经开始在手机上存储重要文件,因为他们可以在旅途中或现在几乎在任何情况下轻松访问数据。 不言而喻; 您只需在手机上轻轻一按,即可轻松访问电子邮件、共享图片、编辑和共享文档、支付账单等。一般来…

【Openstack Train安装】七、glance安装

Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是为该选择提供不同的操作系统镜像。Glance提供Restful API可以查询虚拟机镜像的me…

ios(swiftui) 属性包装器详解

目录 1. State 2. Binding 3. ObservedObject 和Published 4. StateObject 5. EnvironmentObject和Environment 6. AppStorage 在 SwiftUI 中,属性包装器用于增强和管理视图的状态,以及处理视图与数据模型之间的绑定和交互。下面是一些常见…

Flutter创建TabBar

使用TabBar和TabBarView来创建一个包含"首页"、"分类"和"我的"的TabBar。每个Tab对应一个Tab控件,TabBarView中的每个页面对应一个Widget。 1.Tab使用自定义图标和颜色 一般UI设计的图会带渐变色之类的,应该保持图片的原…

【实战教程】PHP如何轻松对接阿里云直播?

1. 配置阿里云直播的推流地址和播放地址 使用阿里云直播功能前,首先需要在阿里云控制台中创建直播应用,然后获取推流地址和播放地址。 推流地址一般格式为: rtmp://{Domain}/{AppName}/{StreamName}?auth_key{AuthKey}-{Timestamp}-{Rand…

vuepress-----5、SEO

# 5、SEO 标题描述信息作者faviconkeywords 图标下载:https://favicon.io/ (opens new window) 个人博客SEO属性设置 module.exports { title: "小邵子",description: 小邵子的个人笔记,head: [[link, { rel: icon, href: /favicon.ico }],[meta, { …

什么是API? (应用程序编程接口)

我们经常听到 API 这个专业名称。那么什么是 API 呢? 定义 API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软…

【电路笔记】-分流器

分流器 文章目录 分流器1、概述2、通用/网络配置3、无功分流器3.1 电阻电容分流器3.2 电阻-电感分流器 4、总结 我们在之前关于分压器的文中已经看到,分压过程是通过在串联配置中关联相同的组件来实现的。 在本文中,我们将重点关注电流分频器执行的电流分…

MongoDB导入导出命令

(1)mongoexport命令 例如: mongoexport --db testdb --collection person --out person.json mongoexport --db testdb --collection person --fields name,age --out person.json mongoexport --db testdb --collection person --query {&qu…

Arkts@Watch装饰器与内置组件双向同步深度讲解与实战应用【鸿蒙专栏-14】

文章目录 ArkTS 状态管理深度解析:@Watch 和 $$ 运算符的妙用@Watch 装饰器:状态变量的敏感监听装饰器说明语法说明观察变化和行为表现限制条件使用场景$$ 运算符:内置组件状态的双向同步使用规则使用示例ArkTS 深度探索:@Watch 装饰器与 $$ 运算符的进阶应用进阶应用:@Wa…

四个方法,设置excel文件只读模式

由于excel文件经常用于数据文件,数据就需要特别保护,大家可能需要将文件设置为只读模式来保护数据不被修改,Excel文件想要设置为只读的方法有很多,今天分享四种方法给大家: 方法一:文件属性 右键点击文件…

浅谈交流电表在印度充电桩生产厂家的应用

一.背景: 近几年为应对温室气体的排放导致的全球变暖、气候变化等问题,各大国纷纷对焦推进电动汽车,从而减少传统燃油汽车带来的大量温室气体排放。而推进新能源汽车的各项举措之中,充电桩的基础建设,又是其中的重中之重&#xf…

开源播放器GSYVideoPlayer + ViewPager2 源码解析

开源播放器GSYVideoPlayer ViewPager2 源码解析 前言一、GSYVideoPlayer🔥🔥🔥是什么?二、源码解析1.ViewPager2Activity 总结 前言 本文介绍GSYVideoPlayer源码中关于ViewPager2 GSYVideoPlayer 实现的滑动播放列表的实现原理。…

VMD-Attention-LSTM 价格预测实战

VMD-Attention-LSTM时间序列价格预测实战 完整数据代码可直接运行_哔哩哔哩_bilibili 数据展示:数据有几万条 足够的 主要模型代码: import tensorflow as tfdef attention_3d_block(inputs,TIME_STEPS,SINGLE_ATTENTION_VECTOR):# inputs.shape = (batch_size, time_steps,…

C#队列(Queue)及泛型类(Queue<T>)

队列实现先进先出,有装箱拆箱行为,可存放任意类型,但无法获取指定位置元素,只能取出最先存储的元素。 一、基本队列操作 1、向队列添加元素(Enqueue) Queue queue new Queue(); queue.Enqueue(1); queue.…