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()
实际运行效果:(由于输出很多,这里只展示部分)
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/14953180.html