处理大CSV转Xlsx时Python触发0xC0000005崩溃求助
解决大CSV转XLSX时出现0xC0000005错误的思路
硬件排查(优先排查,因笔记本可正常运行)
- 内存检测:运行
mdsched.exe(Windows内置内存诊断工具),选择立即重启并检查问题。0xC0000005本质是内存访问违规,DDR5内存的兼容性故障或硬件损坏是高概率诱因。 - 硬盘健康检查:用CrystalDiskInfo查看F盘的SMART数据,重点关注
重新分配扇区计数、当前待映射扇区数,大文件读写极易触发硬盘潜在故障。 - CPU稳定性验证:进入BIOS关闭CPU超频/超线程设置,用AIDA64进行10分钟以上的CPU烤机测试,排除CPU散热不足或超频导致的运算异常。
软件层面优化(降低内存压力,尝试绕过硬件异常)
当前代码用openpyxl逐行写入,大文件会持续占用内存,试试以下更高效的方案:
方案1:用pandas分块处理
import pandas as pd def csv_to_xlsx_chunked(csv_file, xlsx_file, chunk_size=10000): writer = pd.ExcelWriter(xlsx_file, engine='openpyxl') for i, chunk in enumerate(pd.read_csv(csv_file, chunksize=chunk_size, encoding='utf-8')): chunk.to_excel(writer, sheet_name='Sheet1', startrow=i*chunk_size, index=False, header=(i==0)) writer.close() csv_file_path = 'F:\\1.csv' xlsx_file_path = 'F:\\data.xlsx' csv_to_xlsx_chunked(csv_file_path, xlsx_file_path)
方案2:改用xlsxwriter库
xlsxwriter的写入机制更轻量化,内存占用更低:
import csv import xlsxwriter def csv_to_xlsx_xlsxwriter(csv_file, xlsx_file): workbook = xlsxwriter.Workbook(xlsx_file) worksheet = workbook.add_worksheet('Sheet1') with open(csv_file, 'r', newline='', encoding='utf-8') as file: reader = csv.reader(file) for row_num, row in enumerate(reader): worksheet.write_row(row_num, 0, row) workbook.close() csv_file_path = 'F:\\1.csv' xlsx_file_path = 'F:\\data.xlsx' csv_to_xlsx_xlsxwriter(csv_file_path, xlsx_file_path)
系统设置调整
- 调整虚拟内存:右键
此电脑→属性→高级系统设置→高级→性能设置→高级→虚拟内存,设置为系统管理的大小,避免内存不足引发的访问异常。 - 临时关闭实时杀毒:大文件读写时,杀毒软件的实时扫描可能干扰内存访问,临时关闭Windows Defender实时保护后重试。
内容的提问来源于stack exchange,提问作者lex9527
相关产品推荐
相关产品推荐

