背景:我在5月20日收到了一批Excel文件数据,由于文件很多大约有将近5000个,已经通过编写python脚本处理完成。但是6月9日的时候,又收到了一批新的Excel数据。但是在处理过程中发现,本次提供的数据包含5月20日提供的数据。有的是新增了几个文件,但是文件后缀加了1、2、3这样的数字,有的直接在原先的文件中插入了新的记录,为了对比出来,我编写了一个脚本用来对比文件是否变化。

  判断逻辑:如果文件前缀一样,只是后面的数字不一样,就根据文件大小判断。如果大小一致,就认为是旧文件,反之是新增文件。如果根据目标目录中文件的前缀生成的文件,在原先目录中不存在就认为是新增文件。

  本人向来讲究直接干脆,废话不多说,直接上代码。水平有限,仅供参考。

#!/usr/bin/env python
# coding:utf-8
"""
@File Name: file_compare.py
@Version: 1.0
@Python Version: 3.7
@Author: liguanbin
@Created Time: 2021/6/10 9:07
@Software: PyCharm
@Desc:
""" import os
import glob
import hashlib # 获取省份目录
def file_compare():
global source_path
global target_path
global province_name source_path = input("请输入原先目录:")
target_path = input("请输入目标目录:") #target_path = "C:\\Users\\liguanbin\\Desktop\\新建文件夹\\20210609执委数据整理"
#source_path = "C:\\Users\\liguanbin\\Desktop\\新建文件夹\\20210520执委数据整理" catalog_path_dir = [i for i in os.listdir(target_path) if os.path.isdir(os.path.join(target_path, i))]
#print("该目录下有" + str(len(catalog_path_dir)) + "个目录")
for province_name in catalog_path_dir:
province_path = os.path.join(target_path, province_name)
#print(province_name)
#print(province_path)
province_path_dir = [i for i in os.listdir(province_path) if os.path.isdir(os.path.join(province_path, i))]
print("\"" + province_path + "\" 目录下有" + str(len(province_path_dir)) + "个目录")
for city_name in province_path_dir:
city_path = os.path.join(province_path, city_name)
#print(city_path) all_excel = glob.glob(city_path + "\*.xlsx")
if (all_excel == 0):
print("\"" + city_path + "\" 目录下无.xlsx文件!")
else:
print("\"" + city_path + "\" 目录下有" + str(len(all_excel)) + "个文件")
for excel_path in all_excel: # 目标目录中的文件名
#print(excel_path) #os.path.dirname(excel_path)
excel_file_name = os.path.basename(excel_path)
#print(excel_file_name) quxian = excel_file_name.split('-')[0]
source_excel_path = source_path + "\\" + province_name + "\\" + city_name + "\\" + quxian + ".xlsx"
# 源目录中的文件名
#print(source_excel_path) if os.path.isfile(source_excel_path):
if get_file_size(excel_path) == get_file_size(source_excel_path) :
print(excel_path + "为旧文件!") else:
print(excel_path + "为新增的文件!")
else:
print(excel_path + "为新增的文件!*****") print('*' * 80) def get_file_size(filepath):
return round(os.path.getsize(filepath)/float(1024),2) if __name__ == '__main__': file_compare()

实际运行效果:(由于输出很多,这里只展示部分)

Python-对比两个目录中Excel文件的更多相关文章

  1. shell对比两个目录中有哪些文件不同

    参考:https://www.cnblogs.com/liyuchuan/p/10756066.html 目录结构: /data/dir1 subdir/ subfile /data/dir2 sub ...

  2. 比较两个目录中的文件 diff -rq

    [root@bass test]# mkdir A B [root@bass test]# tree A A └── lin 0 directories, 1 file [root@bass test ...

  3. python glob 用通配符查找指定目录中的文件 - 开源中国社区

    python glob 用通配符查找指定目录中的文件 - 开源中国社区 python glob 用通配符查找指定目录中的文件

  4. find - 递归地在层次目录中处理文件

    总览 SYNOPSIS find [path...] [expression] 描述 DESCRIPTION 这个文档是GNU版本 find 命令的使用手册. find 搜索目录树上的每一个文件名,它 ...

  5. python将字典列表导出为Excel文件的方法

    将如下的字典列表内容导出为Excel表格文件形式: ​ 关于上图字典列表的写入,请参考文章:https://blog.csdn.net/weixin_39082390/article/details/ ...

  6. Linux find命令:在目录中查找文件(超详解)

    find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限.大小.时间.inode 号等来搜索文件.但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,f ...

  7. Java对比两个数据库中的表和字段,写个冷门的东西

    Java对比两个数据库中的表和字段,写个冷门的东西 转载的 来源网络 目前所在的项目组距离下个版本上线已经很近了,就面临了一个问题:开发人员在开发库上根据需要增加数据表.数据字段.或者变更了字段类型或 ...

  8. Linux查看目录中的文件

    Linux查看目录中的文件 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ls examples.desktop jdk 公共的 视频 文档 音乐 java ...

  9. File类之在指定目录中查找文件

    package IoDemo; import java.io.File; /** * @Title:FileDemo2 * @Description:在指定的目录中查找文件 * @author Cra ...

随机推荐

  1. 【Matlab】BFSK的调制与解调仿真

    写在前面 本篇是[Matlab]BASK的调制与解调仿真的下篇,考虑到阅读体验,故另开一篇分享将BFSK的调制与解调仿真. 索引 写在前面 一.BFSK的调制 1.1 异频载波生成 1.2 信号合并 ...

  2. Django(27)类视图

    类视图 在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图.使用类视图可以使用类的一些特性,比如继承等. View django.views.generic.base.View是主 ...

  3. jQurey判断下一项是否为指定项、下一项是否有指定项

    jQurey判断下一项是否为指定项.下一项是否有指定项 此例子中,如果某个列表项没有二级列表,那么去掉它的展开.收起按钮.就是前边那个减号. 此时我们需要判断VOC综合治理技术这一项是否含有二级菜单, ...

  4. [bug] HMaster启动后几秒消失

    参考 https://blog.csdn.net/weixin_44896798/article/details/97800045 https://blog.csdn.net/liudi1993/ar ...

  5. 【CentOS_7】使用tcpdump抓明文包

    tcpdump port 12345 -X -X:以十六进制与ASCII方式输出,用于抓取http等明文传输协议 tcpdump功能强大,更多参数可以参考  https://www.cnblogs.c ...

  6. 使用autotools工具用configure、make、make install编译安装linux工程的详细步骤

    使用autotools工具用configure.make.make install编译安装linux工程的详细步骤 转载tmxkwzy 最后发布于2016-11-24 10:20:15 阅读数 324 ...

  7. power delivery功率输出

    delivery

  8. lvscan 查看系统中存在的所有LVM逻辑卷

    相关命令:lvresize,lvreduce,lvextend,lvdisplay,lvcreate,lvremove lvscan指令:扫描逻辑卷[语    法]lvscan [选项][功能介绍]l ...

  9. spark算子优化

    一.在聚合前在map端先预聚合 使用reduceByKey/aggregateByKey代替groupByKey 二.一次处理一个分区的数据,不过要注意一个分区里的数据不要太大,不然会报oom * 使 ...

  10. 201871030137-杨钦颖 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    201871030137-杨钦颖 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 班级连接 这个作业要求链接 作业连接 我的课程学习目 ...