Python實現簡單的excel對比工具
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# date: 2021/4/17
# filename: xlsx_compare
# author: kplin
import pandas as pd
import os
def my_log(info):
try:
with open('error_info.txt', 'w+') as f:
f.write(info)
f.close()
except Exception as e:
print(' 寫入錯誤日誌時發生以下錯誤: \n%s'%e)
def get_file():
try:
# 獲取當前資料夾下的 2 個檔案
dir_path = os.getcwd()
files = os.listdir(dir_path)
ret = []
for i in files:
if i.endswith('.xlsx') and not i.endswith('_new.xlsx'):
ret.append(i)
if i.endswith('.xlsx') and not i.endswith('_new.xlsx') and '~$' in i:
info =' 請關閉檔案 %s'%i
my_log(info)
return None
if len(ret) == 0:
info = ' 找不到待檢測檔案,請將 2 個 xlsx 檔案放入此資料夾 '
my_log(info)
return None
# print(ret)
return ret[0], ret[1]
except Exception as e:
my_log(str(e))
def main(file1, file2):
try:
# 1 、獲取原檔案路徑和名稱,先準備即將生成的新檔名和檔案路徑
fname1, ext = os.path.splitext(os.path.basename(file1))
new_file1 = 外匯跟單gendan5.comfile1.replace(fname1, fname1 + '_new')
fname2, ext = os.path.splitext(os.path.basename(file2))
new_file2 = file2.replace(fname2, fname2 + '_new')
# 2 、讀取檔案
df1 = pd.read_excel(file1)
df2 = pd.read_excel(file2)
length = len(df1) if len(df1) >= len(df2) else len(df2)
# 兩個資料塊行數不一致,補成一致的
if len(df1) - len(df2) > 0:
# 獲取 DF1 的列名
d = {}
for i in df2.columns:
d[i] = ['' for x in range(len(df1) - len(df2))]
concat_df = pd.DataFrame(d)
df2 = pd.concat([df2, concat_df])
if len(df2) - len(df1) > 0:
d = {}
for i in df1.columns:
d[i] = ['' for x in range(len(df2) - len(df1))]
concat_df = pd.DataFrame(d)
df1 = pd.concat([df1, concat_df])
dis_index = []
for i in range(len(df1)):
ret = df1.iloc[i, :]==df2.iloc[i, :]
if False in ret.tolist():
dis_index.append(i)
dis_list = ['' for i in range(length)]
for i in dis_index:
dis_list[i] = ' 不一致 '
df1['Compare Result'] = dis_list
df2['Compare Result'] = dis_list
df1.to_excel(new_file1, index=False)
df2.to_excel(new_file2, index=False)
my_log(' 校驗成功,本次對比檔案為: %s%s 和 %s%s'%(fname1, ext, fname2, ext))
print(' 校驗完成,請檢視新檔案 ')
except Exception as e:
print(' 出現未知錯誤,請檢視 error_info.txt')
my_log(str(e))
if __name__ == '__main__':
if not get_file():
print(' 讀取檔案時發生錯誤,請檢視 error_info.txt')
else:
file1, file2 = get_file()
main(file1, file2)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2769367/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 日誌收集工具簡單對比
- Python使用TCP實現簡單對話PythonTCP
- 單例模式實現對比單例模式
- DcatAdmin 簡單實現匯入ExcelExcel
- 簡單計算器的程式導向實現和麵向物件實現對比物件
- 前端動畫效果實現的簡單比較前端動畫
- ubuntu實現簡單的劃詞工具Ubuntu
- Python實現對比兩個Excel資料內容並標出不同PythonExcel
- Dcat Admin實現簡單的excel匯入功能Excel
- 比較簡單實用並且免費的埠對映(內網穿透)工具內網穿透
- python下ssh的簡單實現Python
- python實現的簡單點對點(p2p)聊天Python
- 如何快速簡單的實現 Excel資料按列提取Excel
- ETL工具與指令碼實現之間的對比指令碼
- python實現簡單猜單詞遊戲Python遊戲
- 簡單介紹Go 字串比較的實現示例Go字串
- ListView 與 RecyclerView 簡單對比View
- Kotlin和Java的簡單對比KotlinJava
- C# 單例模式的實現和效能對比C#單例模式
- Laravel 使用者認證最簡單的實現 比 Jetstream 要簡單很多Laravel
- 配置簡單功能強大的excel工具類搞定excel匯入匯出工具類(一)Excel
- Python實現簡單負載均衡Python負載
- EXCEL資料上傳到SQL SERVER中的簡單實現方法ExcelSQLServer
- 如何簡單實現關聯型別資料的Excel匯出?型別Excel
- 基於Promise實現對Ajax的簡單封裝Promise封裝
- ORACLE PL/SQL 物件、表資料對比功能儲存過程簡單實現OracleSQL物件儲存過程
- 歸併排序與快速排序的簡明實現及對比排序
- python 爬取 blessing skin 的簡單實現Python
- Python技法:實現簡單的遞迴下降ParserPython遞迴
- Python實現簡單驗證碼的轉文字Python
- 用python實現簡單的線上翻譯程式Python
- python linkedhashset 簡單實現,使用OrderedDictPython
- 實現簡單的BitMap
- ArrayList的簡單實現
- AOP的簡單實現
- 簡單的 HashMap 實現HashMap
- 簡單的Filter實現Filter
- Promise的簡單實現Promise