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

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

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

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

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

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

# -*- 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代码的更多相关文章

  1. Windows下对文件夹下所有图片批量重命名(附C++,python,matlab代码)

    https://blog.csdn.net/u011574296/article/details/72956446: Windows下对文件夹下所有图片批量重命名(附C++,python,matlab ...

  2. python批量修改一个文件夹下含多个文件夹中的所有图片名称

    网上能找到的,大多是只对一个文件夹下所有图片进行重命名的代码. 这边实现的是,一个文件夹下有多个文件夹内图片的重命名. rename.py #!/usr/bin/python # -*- coding ...

  3. [转载] 与WIN不同,linux替换文件夹会删除原文件夹下的全部内容!

    今天差点把源码给覆盖掉了><...555... 虚惊一场!!看了一篇博客分析这种情况.我的环境是CentOS5.5,不会出现文件夹直接被覆盖的情况,但是在Linux下不要用Win下的一些直 ...

  4. hdfs中删除文件、文件夹、抓取内容

    删除文件   bin/hdfs dfs -rm output2/* 删除文件夹   bin/hdfs dfs -rm -r output2 抓取内容     bin/hdfs dfs -cat /us ...

  5. bat 批处理切换到当前脚本所在文件夹

    bat 批处理切换到当前脚本所在文件夹   切换到当前脚本所在的文件夹 ? 1 cd  %~dp0 另外附上一些bat基本内容 —————————————————————————————— 批处理常用 ...

  6. Windows Store App JavaScript 开发:获取文件和文件夹列表

    在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolder ...

  7. 文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance/GoodSync/Allway Sync/Compare Advance)

    关于文件同步的文章,已经很多次出现在异次元上了,因为它们很多都能实实在在提高工作便利性.比方说有我们熟悉的云端同步软件 Dropbox.金山快盘,以及曾经还介绍过可本地使用的 Allway Sync  ...

  8. 365DirMon(文件夹监视专家) v2.8绿色免费版

    软件名称:365DirMon(文件夹监视专家)软件语言: 简体中文授权方式: 免费软件运行环境: Win 32位/64位软件大小: 1.6M 图片预览: 软件简介:365DirMon 是一可以监控磁盘 ...

  9. Linux下 两台机器文件/文件夹 相互拷贝

    Linux下 两台机器文件/文件夹 相互拷贝 设有两台机器 :A:*.101及 B:*.102. 把A下的.temp/var/a.txt拷贝到B机器的/text/目录下: 进入B机器:scp root ...

  10. 修改windows user 文件夹中的用户名

    假设我们需要将帐户A改名为B.首先我们需要用另一个管理员帐户C登陆系统. 1.在控制面板-〉用户帐户中将帐户A改名为B. 2.打开C:/Users或"用户"文件夹,将文件夹A重命名 ...

随机推荐

  1. WEB服务与NGINX(2)-NGINX的I/O模型

    WEB服务与NGINX(2)-NGINX的I/O模型 目录 WEB服务与NGINX(2)-NGINX的I/O模型 1. linux I/0模型及在NGINX中的应用 1.1 I/O模型概述 1.2 系 ...

  2. fastposter v2.9.0 程序员必备海报生成器

    fastposter v2.9.0 程序员必备海报生成器 fastposter海报生成器是一款快速开发海报的工具.只需上传一张背景图,在对应的位置放上组件(文字.图片.二维.头像)即可生成海报. 点击 ...

  3. vue2下拉框组件使用技巧

    1.ant design 下拉框组件--单选 <span style="font-size: 14px;">污水厂</span> <a-select ...

  4. ECMAScript 语言规范每年都会进行一次更新,而备受期待的 ECMAScript 2024 将于 2024 年 6 月正式亮相。目前,ECMAScript 2024 的候选版本已经发布,为我们带来了一系列实用的新功能。

    Promise.withResolvers 使用 Promise.withResolvers() 关键的区别在于解决和拒绝函数现在与 Promise 本身处于同一作用域,而不是在执行器中被创建和一次性 ...

  5. [从零学习C++][01]如何在Clion中定义多个main函数

    在一个Clion项目中定义多个main函数编译的时候会报这个错误 显示就是main函数重复了,查阅了下好像可以通过修改CMakeList.txt来修改,将其定义成两个独立的executable即可 a ...

  6. openstack报错

    1. 创建机器失败 openstack_compute_servergroup_v2.servergroup_vm-qa-cloudconfig-sidecar: Creating... 41Erro ...

  7. 网络性能评估工具Iperf详解

    一.网络性能评估工具Iperf 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理.网络存在安全漏洞等原因,都会导致网络带宽利用率不高.要找到网络 ...

  8. 基于FPGA的4x4矩阵键盘驱动设计---第一版

    欢迎各位朋友关注"郝旭帅电子设计团队",本篇为各位朋友介绍基于FPGA的4x4矩阵键盘驱动设计---第一版 功能说明: 1. 驱动4x4矩阵键盘:按下任意一个按键,解析出对应按键信 ...

  9. .net Mvc5Webapi接口接收参数为null的一种情况分享

    同样的前后端项目,其他接口用post接收自定义对象形式的参数,是能成功接收的.在这个前提下,出现某个接口接收的参数为null或值全是默认值,可能的原因是这样: 前端定义的参数的字段比后台定义的dto对 ...

  10. CSS---鼠标悬浮时逐渐变大样式

    .tuijian_2:hover{ transform: scale(1.3); transition: all 1s; }