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 ...
随机推荐
- Java初始化数据域的途径
Java调用构造器的具体处理步骤: 1.所有数据域被初始化为默认值(0,false或null); 2.按照在类声明中出现的次序,依次执行所有域的初始化语句和初始化块: 3.如果构造器第一行调用了第二个 ...
- 笔记·RCNN系相关
这篇博客总述了从RCNN到Mask RCNN的发展过程 https://blog.csdn.net/heavenpeien/article/details/80534963 简单的说,Fast RCN ...
- [bug] maven“1.5不支持diamond运算符,请使用source 7或更高版本以启用diamond运算符”
原因 maven打包默认采用jdk 1.5,无法识别<> 解决 在pom.xml中加入: <properties> <maven.compiler.source>1 ...
- Linux服务之Apache服务篇
apache httpd:提供http服务 http超文本协议 HTML超文本标记语言 URL(Uniform Resource Locator)统一资源定位符 http://www.sina.com ...
- Linux进阶之bond链路聚合
一.简述: 一般来讲,生产环境必须提供7×24小时的网络传输服务.借助于网卡绑定技术,不仅可以提高网络传输速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务.假设我们对两块 ...
- REST 架构风格详解
什么是 REST 架构风格 REST(Representational State Transfer)是表述性状态转移.分布式超媒体软件的一种架构风格,它基于使用 HTTP.URI 等现有的广泛流行的 ...
- linux命令--使用fsck修复文件系统
使用fsck修复文件系统错误 1.问题描述 服务器maint_samba 由于服务器maint_samba (debian操作系统)没有正常关机,在重新启动过程中/dev/sdb1出现文件系统错误,需 ...
- 炫彩流光按钮 CSS + HTML
炫彩流光按钮 写在前面 你若要喜爱你自己的价值,你就得给世界创造价值.--歌德 效果图 三个绝美的样例 HTML代码 <div class="box"> <but ...
- 吐血整理!Python常用第三方库,码住!!!
Python作为一种编程语言近年来越来越受欢迎,它为什么这么火? 其中一个重要原因就是因为Python的库丰富--Python语言提供超过15万个第三方库,Python库之间广泛联系.逐层封装.几 ...
- MySQL 基础、安装、配置
1. MySQL 基础 1.1 什么是数据库? 1.2 数据库的类型 1.3 关系型数据库的优点 1.4 MySQL 简介 1.5 MySQL 数据类型 1.6 Mysql 存储引擎 1.7 MySQ ...