当前位置:网站首页>解决方案:读取两个文件夹里不同名的文件,处理映射不对应的文件
解决方案:读取两个文件夹里不同名的文件,处理映射不对应的文件
2022-07-26 22:46:00 【中杯可乐多加冰】
一、问题描述
在实验过程中,有a、b两个文件夹,每个文件夹里有上万个文件,文件类型不相同,但是文件名是对应的,比如a文件夹里有1.jpg、2.jpg、3.jpg,对应的b文件夹里有1.txt、2.txt、3.txt。
而遇见的问题是,在两个文件夹中,部分文件对应不到同名文件,比如a文件夹里有10502.jpg但是b文件夹里并没有10502.txt,b文件夹里有10522.txt而a文件夹里没有10522.jpg。
那么需要解决的问题就是,如何找到这些不对应的文件,找到差集,即找到在a中但不在b中的元素,在b中但不在a中的元素,最后将其打印出来。
文件数量少的时候可以用命令行或者简单的文件批处理进行操作,但是当文件数量上万级别时,会出现效率缓慢的问题。这里使用的是python的一些文件操作方法进行解决。
二、解决方案:
# -*- coding: utf-8 -*-
import os
path1 = r'./images'
path2 = r'./text'
def read_all_file_name():
file_path = './text'
file_name = os.listdir(file_path)
return file_name
def file_name(image_dir, text_dir):
jpg_list = []
txt_list = []
jpg_list = os.listdir(image_dir)
text_list = os.listdir(text_dir)
print(len(jpg_list))
print(len(text_list))
for i in range(len(jpg_list)):
jpg_list[i] = jpg_list[i].split(".")[0]
for i in range(len(text_list)):
text_list[i] = text_list[i].split(".")[0]
diff = set(text_list).difference(set(jpg_list)) # 差集,在a中但不在b中的元素
for name in diff:
print("no jpg", name + ".text")
diff2 = set(jpg_list).difference(set(text_list)) # 差集,在b中但不在a中的元素
print(len(diff2))
for name in diff2:
print("no txt", name + ".jpg")
if __name__ == '__main__':
# file_names = read_all_file_name()
# print(file_names)
file_name(path1, path2)
其中path1是images文件夹,path2是text文件夹。
三、方法解释
read_all_file_name函数在其中没有起到作用,只是写在这里备用的,他的功能是可以读取到文件夹的目录,然后通过listdir创建list打印目录中的所有文件列表。
file_name函数是本方法的主要函数,参数是两个文件夹的地址名,在本代码里是path1 = r’./images’、path2 = r’./text’,r表示只读。
在file_name函数里,首先我们把两个文件夹的文件名读取成list,成为jpg_list和text_list,但是每个文件夹的后缀名不同,不能计算差集,故我们使用split(“.”)[0]进行分割,然后得到前面的纯文件名。最后我们使用diff = set(text_list).difference(set(jpg_list)),将差集存在diff里,然后最后打印出差集。
边栏推荐
猜你喜欢

Domain name analysis and DNS configuration installation

MySQL单表查询练习

【CANN训练营】走进媒体数据处理1

System safety and Application

Application of load balancing

How does MySQL get the first three items in each group

mysql的安装

MySQL backup recovery

QoS quality of service - QoS overview
![[cann training camp] enter media data processing 1](/img/6c/76d3784203af18a7dee199c3a7fd24.png)
[cann training camp] enter media data processing 1
随机推荐
【无标题】
String容器的底层实现
Deveco could not resolve com.huawei.ohos:hap:2.4.5.0. error
The bottom implementation of string container
Installation and basic operation of docker
Docter的安装和基础操作
regular expression
深度学习过程中笔记(待完善)
MySQL single table query exercise
Proxmox VE安装与初始化
MySQL中对于事务完整的超详细介绍
【CANN训练营】走进媒体数据处理(下)
You can understand the detailed introduction and understanding of inheritance
23nfs shared storage service
继承的详细介绍与理解,看了就懂
Makefile
负载均衡的运用
Machine learning exercise 6 - Support Vector Machines
mysql存储引擎及其区别
D - Difference HDU - 5936