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"
)
python 对比两个文件csv
最新推荐文章于 2025-06-04 16:07:42 发布