Python-对比两个目录中Excel文件
背景:我在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文件的更多相关文章
- shell对比两个目录中有哪些文件不同
参考:https://www.cnblogs.com/liyuchuan/p/10756066.html 目录结构: /data/dir1 subdir/ subfile /data/dir2 sub ...
- 比较两个目录中的文件 diff -rq
[root@bass test]# mkdir A B [root@bass test]# tree A A └── lin 0 directories, 1 file [root@bass test ...
- python glob 用通配符查找指定目录中的文件 - 开源中国社区
python glob 用通配符查找指定目录中的文件 - 开源中国社区 python glob 用通配符查找指定目录中的文件
- find - 递归地在层次目录中处理文件
总览 SYNOPSIS find [path...] [expression] 描述 DESCRIPTION 这个文档是GNU版本 find 命令的使用手册. find 搜索目录树上的每一个文件名,它 ...
- python将字典列表导出为Excel文件的方法
将如下的字典列表内容导出为Excel表格文件形式: 关于上图字典列表的写入,请参考文章:https://blog.csdn.net/weixin_39082390/article/details/ ...
- Linux find命令:在目录中查找文件(超详解)
find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限.大小.时间.inode 号等来搜索文件.但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,f ...
- Java对比两个数据库中的表和字段,写个冷门的东西
Java对比两个数据库中的表和字段,写个冷门的东西 转载的 来源网络 目前所在的项目组距离下个版本上线已经很近了,就面临了一个问题:开发人员在开发库上根据需要增加数据表.数据字段.或者变更了字段类型或 ...
- Linux查看目录中的文件
Linux查看目录中的文件 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ls examples.desktop jdk 公共的 视频 文档 音乐 java ...
- File类之在指定目录中查找文件
package IoDemo; import java.io.File; /** * @Title:FileDemo2 * @Description:在指定的目录中查找文件 * @author Cra ...
随机推荐
- 【Matlab】BFSK的调制与解调仿真
写在前面 本篇是[Matlab]BASK的调制与解调仿真的下篇,考虑到阅读体验,故另开一篇分享将BFSK的调制与解调仿真. 索引 写在前面 一.BFSK的调制 1.1 异频载波生成 1.2 信号合并 ...
- Django(27)类视图
类视图 在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图.使用类视图可以使用类的一些特性,比如继承等. View django.views.generic.base.View是主 ...
- jQurey判断下一项是否为指定项、下一项是否有指定项
jQurey判断下一项是否为指定项.下一项是否有指定项 此例子中,如果某个列表项没有二级列表,那么去掉它的展开.收起按钮.就是前边那个减号. 此时我们需要判断VOC综合治理技术这一项是否含有二级菜单, ...
- [bug] HMaster启动后几秒消失
参考 https://blog.csdn.net/weixin_44896798/article/details/97800045 https://blog.csdn.net/liudi1993/ar ...
- 【CentOS_7】使用tcpdump抓明文包
tcpdump port 12345 -X -X:以十六进制与ASCII方式输出,用于抓取http等明文传输协议 tcpdump功能强大,更多参数可以参考 https://www.cnblogs.c ...
- 使用autotools工具用configure、make、make install编译安装linux工程的详细步骤
使用autotools工具用configure.make.make install编译安装linux工程的详细步骤 转载tmxkwzy 最后发布于2016-11-24 10:20:15 阅读数 324 ...
- power delivery功率输出
delivery
- lvscan 查看系统中存在的所有LVM逻辑卷
相关命令:lvresize,lvreduce,lvextend,lvdisplay,lvcreate,lvremove lvscan指令:扫描逻辑卷[语 法]lvscan [选项][功能介绍]l ...
- spark算子优化
一.在聚合前在map端先预聚合 使用reduceByKey/aggregateByKey代替groupByKey 二.一次处理一个分区的数据,不过要注意一个分区里的数据不要太大,不然会报oom * 使 ...
- 201871030137-杨钦颖 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
201871030137-杨钦颖 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 班级连接 这个作业要求链接 作业连接 我的课程学习目 ...