核对不同文件夹所含内容的差异并提取缺失内容:Python代码

python · 浏览次数 : 0

小编点评

本文介绍了一种基于Python语言的方法,用于查找并统计两个大文件夹之间子文件夹的差异。通过对比两个文件夹中的子文件夹列表,可以找出第一个文件夹中缺失的子文件夹及其数量。 1. **需求明确**: 本文首先明确了需要实现的具体需求,即基于第一个大文件夹作为标准,对第二个大文件夹中的子文件夹进行查漏补缺,并输出结果。 2. **代码实现**: 代码部分主要使用了Python的os模块来操作文件系统,通过os.listdir()函数获取文件夹列表,并使用for循环遍历这些列表以找出差异。具体步骤包括: - 导入os模块。 - 指定标准文件夹路径(template_folder)和新文件夹路径(new_folder)。 - 使用os.listdir()分别获取两个文件夹中的子文件夹列表。 - 初始化一个变量num来记录缺失子文件夹的数量。 - 使用for循环遍历标准文件夹中的子文件夹。 - 在新文件夹的子文件夹列表中搜索当前子文件夹,若不存在则num加1,并打印缺失的子文件夹名称。 - 循环结束后,打印出缺失子文件夹的数量。 3. **代码解释**: 代码逻辑清晰,首先介绍了必要的导入操作,然后指定了具体的文件夹路径。接着,通过os.listdir()函数获取了两个文件夹的子文件夹列表,并使用变量num来跟踪缺失的子文件夹。for循环遍历标准文件夹中的子文件夹,并在新文件夹的列表中进行搜索。如果找到缺失的子文件夹,就更新num的值并打印相关信息。 4. **结果输出**: 运行代码后,会得到一个结果列表,列出了所有在标准文件夹中存在但在新文件夹中缺失的子文件夹及其数量。 5. **扩展应用**: 文章还提到了如果需要复制缺失的子文件夹,可以参考相关文章中的代码思路来实现。 总的来说,本文提供了一种简单有效的方法来检查两个大文件夹之间的子文件夹差异,并能够找出缺失的子文件夹及其数量,对于文件管理或自动化任务具有一定的实用价值。

正文

  本文介绍基于Python语言,以一个大文件夹作为标准,对另一个大文件夹所包含的子文件夹文件加以查漏补缺,并将查漏补缺的结果输出的方法。

  首先,来明确一下本文所需实现的具体需求。现有一个大文件夹,其中包含了大量子文件夹,如下图所示。

image

  此外,我们还有另一个大文件夹,其中同样包含了大量的子文件夹,如下图所示;从上图与下图中的紫色框可以看出,这是两个不一样的大文件夹。但同时,我们还知道这两个大文件夹中的子文件夹数量,以及每一个子文件夹的名称,几乎是完全一致的——但是下图所示的大文件夹较之上图,缺少了一些子文件夹

  我们现在希望实现的是,以第一幅图所示的大文件夹为标准,对第二幅图所示的大文件夹中的子文件夹加以查漏补缺,找出第二个大文件夹中缺少的子文件夹的名称,以及缺少的子文件夹的数量。

  了解了具体需求,我们就可以开始代码的撰写。这里需要注意,本文比较的是两个大文件夹子文件夹的差异;如果大家希望比较两个大文件夹文件的差异,整体思路也都是一样的,也可以用本文提供的代码。

  本文所用到的具体代码如下所示。

# -*- coding: utf-8 -*-
"""
Created on Tue Feb 21 17:12:47 2023

@author: fkxxgis
"""

import os

template_folder = r"E:\02_Project\01_Chlorophyll\Fishnet\ResultFolder"
new_folder = r"E:\02_Project\01_Chlorophyll\Fishnet\ResultFolder_AI"

folder_list = os.listdir(template_folder)
new_list = os.listdir(new_folder)

num = 0
for folder in folder_list:
    if folder not in new_list:
        num += 1
        print(folder, "is not in new folder!")
print("\n", num, " folder(S) is(are) not in new folder!", sep = "")

  可以看到,代码整体也是非常简单的。首先,template_folder是我们作为标准的大文件夹,也就是本文开头第一幅图所示的文件夹;而new_folder则是需要对其中子文件夹加以查漏补缺的大文件夹,也就是本文开头第二幅图所示的文件夹

  首先,介绍一下代码的整体思路。

  首先,我们基于os.listdir()函数,遍历标准大文件夹中的每一个子文件夹,获取每一个子文件夹的名称,并将其存放在一个列表中;接下来,我们通过同样的方式,获取待查漏补缺的大文件夹中的子文件夹名称,同样存放在一个列表中。接下来,我们即可开始对比两个大文件夹子文件夹的数量差异。首先,设置一个变量num,作为子文件夹数量差异的计算变量;随后,通过一个for循环,依次取出标准大文件夹子文件夹的名称,并在待查漏补缺的大文件夹对应的子文件夹名称列表中加以搜索;如果找不到当前名称的子文件夹,说明在第二个大文件夹中就少了这一子文件夹,因此需要将其名称输出,并在变量num中增加1。完成上述循环后,我们即可获得第二个大文件夹,也就是待查漏补缺的大文件夹中,所缺少的子文件夹的名称以及其数量。

  其次,代码详细的逐句介绍如下。

  第一部分,我们需要导入所需的Python内置模块os,其用于与操作系统进行交互,在本文中就是进行读取文件列表等操作。

  随后,我们指定了一个文件夹路径,存储在变量template_folder中;该文件夹是我们作为标准的大文件夹,即本文开头第一幅图所示的文件夹。接下来,我们继续指定另一个文件夹路径,存储在变量new_folder中。该文件夹就是需要对其中子文件夹加以查漏补缺的大文件夹,也就是本文开头第二幅图所示的文件夹

  随后,使用os.listdir()函数获取作为标准的大文件夹中,所有的文件和文件夹的列表,并将其存储在变量folder_list中;同样的方法,使用os.listdir()函数获取另一个文件夹中的所有文件和文件夹的列表,并将其存储在变量new_list中。

  接下来,我们初始化一个变量num,用于计数在模板文件夹中存在,但在新文件夹中不存在的文件夹的数量。随后,即可开始循环,遍历模板文件夹中的每个文件夹,并使用条件判断语句检查这个文件夹是否存在于新文件夹中——如果文件夹不在新文件夹中,则执行以下操作:第一步,将变量num的值增加1,用于计数不存在于新文件夹中的文件夹的数量;第二步,打印当前文件夹的名称,以及附加的文本信息。

  最后,我们打印最终的结果,显示不存在于新文件夹中的文件夹的数量。

  运行上述代码,将会得到如下所示的结果。

  代码非常简单,到这里就结束了;如果大家还有其他需求,可以自行再扩充代码。例如,如果希望将待查漏补缺的大文件夹中缺少的子文件夹复制过来,则可以参考文章Python结合文件名称将多个文件复制到不同路径下中所提到的代码思路加以实现。

  至此,大功告成。

与核对不同文件夹所含内容的差异并提取缺失内容:Python代码相似的内容:

核对不同文件夹所含内容的差异并提取缺失内容:Python代码

本文介绍基于Python语言,以一个大文件夹作为标准,对另一个大文件夹所包含的子文件夹或文件加以查漏补缺,并将查漏补缺的结果输出的方法~

云上的米开朗基罗:在不确定时代,寻找建筑般的确定性

摘要:SRE的核心文化,依旧需要各界携手去探索和发扬。但就像运维所需的确定性那样,SRE探索对每家企业的未来价值来说,也是充满确定性的。 本文分享自华为云社区《云上的米开朗基罗:在不确定时代,寻找建筑般的确定性》,作者: SRE确定性运维。 文艺复兴三杰之一的米开朗基罗,被称为“天才建筑师”。其实他

[转帖]Linux:CPU频率调节模式以及降频方法简介

概述 cpufreq的核心功能,是通过调整CPU的电压和频率,来兼顾系统的性能和功耗。在不需要高性能时,降低电压和频率,以降低功耗;在需要高性能时,提高电压和频率,以提高性能。 cpufreq 是一个动态调整cpu频率的模块,系统启动时会生成一个文件夹 /sys/devices/system/cpu

深入理解 C++ 中的多态与文件操作

C++ 多态 多态(Polymorphism)是面向对象编程(OOP)的核心概念之一,它允许对象在相同操作下表现出不同的行为。在 C++ 中,多态通常通过继承和虚函数来实现。 理解多态 想象一个场景,你有一个动物园,里面有各种动物,如猫、狗、鸟等。每个动物都有自己的叫声。使用面向对象编程,我们可以创

FAQ docker运行tomcat提示找不到文件

docker运行tomcat提示找不到文件 问题描述 docker课程中,老师是用tomcat镜像来演示docker的一些操作 但同样的操作有的同学是ok的,有的同学就会遇到如下错误 核心信息 Exited(1) Cannot find /usr/local/tomcat/bin/setclassp

深入浅出RPC服务 | 不同层的网络协议

本系列文章从RPC产生的历史背景开始讲解,涉及RPC核心原理、RPC实现、JSF的实现等,通过图文类比的方式剖析它的内部世界,让大家对RPC的设计思想有一个宏观的认识。

TextCNN和TextRNN:原理与实践

1.TextCNN原理 CNN的核心点在于可以捕获信息的局部相关性,具体到文本分类任务中可以利用CNN来提取句子中类似N-Gram的关键信息。 (1)一维卷积:使用不同尺寸的kernel_size来模拟语言模型中的N-Gram,提取句子中的信息。即TextCNN中的卷积用的是一维卷积,通过不同ker

自古以来,同步/异步都是八股文第一章

好久没上线了,今天记录编程中老掉牙的几个关键术语,一个言简意赅的术语定义包含主谓宾定状补, 我们应从貌似雷同的术语中体会到不同术语的表象行为、侧重点。 下面给出的3对技术术语,都是很核心、易混淆的概念点,但是多少还是有些表象、侧重点的不同。 书读百遍其义自见, 请关注最下方给出的微软官方技术文献,

『手撕Vue-CLI』自动安装依赖

开篇 经过『手撕Vue-CLI』拷贝模板,实现了自动下载并复制指定模板到目标目录。然而,虽然项目已复制,但其依赖并未自动安装,可能需要用户手动操作,这并不够智能。 正如前文所述,我们已经了解了业务需求和背景。那么,接下来我们将直接深入探讨核心实现细节。 自动安装依赖 在前文中,我们已经将模板文件复制

[转帖]Redis 核心篇:唯快不破的秘密

文章系转载,方便整理和归纳,源文地址:https://z.itpub.net/article/detail/4B5A03BDDBE9A2BC3E080E278FE4D21E 以下文章来源于码哥字节 ,作者MageByte技术团队 学习一个技术,通常只接触了零散的技术点,没有在脑海里建立一个完整的知识