Python CSV模块writerow导出CSV时出现空行问题求助
解决CSV导出每行有空行的问题
问题根源
你遇到的空行问题,本质是Windows文本模式下的换行符自动转换与csv.writer的换行处理叠加导致的:
asksaveasfile默认以文本模式(w)打开文件,Windows系统会自动把写入的\n转换成\r\n- 而
csv.writer本身在写入每行时,已经会添加\r\n作为换行 - 两者叠加后,每行末尾变成
\r\r\n,用软件打开时就会显示出多余的空行
解决办法
调用asksaveasfile时,添加newline=''参数,禁用系统自动的换行符转换,让csv.writer自行处理换行逻辑:
修改后的代码示例
import csv from tkinter import filedialog # 假设你用的是tkinter的asksaveasfile # 调用asksaveasfile时指定newline='' save_file = filedialog.asksaveasfile( defaultextension=".csv", filetypes=[("CSV文件", "*.csv")], newline='' # 关键参数 ) if save_file: writer = csv.writer(save_file) # 写入表头(如果有需要) writer.writerow(["任务ID", "截止日期", "状态"]) # 写入查询结果result writer.writerows(result) save_file.close()
原理说明
根据Python官方csv模块文档的要求:在写入CSV文件时,必须以newline=''打开文件,这样可以确保csv.writer生成的换行符不会被系统文本模式修改,彻底避免多余空行的问题。
内容的提问来源于stack exchange,提问作者serax
相关产品推荐
相关产品推荐

