python 对比两个文件csv

import pandas as pd
import xlsxwriter


def compare_csv_files(file1_path, file2_path, output_file_path):
    try:
        workbook = xlsxwriter.Workbook(output_file_path)
        worksheet = workbook.add_worksheet()
        red_format = workbook.add_format({'color': 'red'})
        green_format = workbook.add_format({'color': 'green'})
        df1 = pd.read_csv(file1_path)
        df2 = pd.read_csv(file2_path)

        df1.drop_duplicates(inplace=True)
        df2.drop_duplicates(inplace=True)
        comparison_results = []
        row_num = 0
        for col in df1.columns:
            if not df1[col].equals(df2[col]):
                comparison_results.append(f"Column '")
                comparison_results.append(red_format)
                comparison_results.append(f"{col}'")
                comparison_results.append(f"is not equal")
                worksheet.write_rich_string(row_num, 0, *comparison_results)
                comparison_results = []
                row_num = row_num + 1
                for idx, (val1, val2) in enumerate(zip(df1[col], df2[col])):
                    if val1 != val2 and not ("nan".__eq__(str(val1)) and "nan".__eq__(str(val1))):
                        comparison_results.append(f"Row {idx}: ")
                        comparison_results.append(red_format)
                        comparison_results.append(f"{val1}")
                        comparison_results.append(" != ")
                        comparison_results.append(green_format)
                        comparison_results.append(f"{val2}")
                        # 使用write_rich_string()方法将富文本字符串写入单元格
                        worksheet.write_rich_string(row_num, 0, *comparison_results)
                        comparison_results = []
                        row_num = row_num + 1
                        # comparison_results.append(f"Row {idx}: {colored(val1, 'red')} != {colored(val2, 'green')}")
                        # comparison_results.append(f"Row {idx}: {val1} != {val2}")
        # df_results = pd.DataFrame(comparison_results, columns=['Comparison Result'])
        # df_results.to_excel(output_file_path, index=False)
        # 关闭工作簿
        workbook.close()
    except Exception as e:
        print(f"An error occurred: {e}")


# Example usage
compare_csv_files(
    "/Users/zhangxia/Desktop/0.0.59_QT1/Users/gdlocal/Library/Atlas2/Assets/TestSequence/LimitsTable.csv",
    "/Users/zhangxia/Desktop/newLimit.csv",
    "/Users/zhangxia/Desktop/comparison_results.xlsx"
)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值