1. 程式人生 > 其它 >Python-對比兩個目錄中Excel檔案

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) # 輸出為 'C:/Users/Desktop/lesson/python' excel_file_name = os.path.basename(excel_path) # 輸出為 class1.py #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()

實際執行效果: