Windows环境下Python CSV Writer写入时多出空行问题
解决Windows下CSV写入时出现多余空行的问题
这种情况我之前也碰到过,核心原因是Windows和类Unix系统(比如Mac)的换行符处理逻辑差异,再加上Python文件打开模式的细节没注意到,才导致了这个奇怪的现象。
问题根源
Windows系统的换行符是\r\n,而Mac用的是\n。当你用Python的csv.writer写入文件时,如果直接用普通的文本模式(比如open('file.csv', 'w')),Python会自动把代码里的\n转换成系统对应的换行符;但csv.writer本身也会在每行末尾添加\r\n(针对Windows),这就导致了双重换行——相当于每行后面多了一个额外的换行标记,最终呈现出来就是有效行之间多出空行。
而Mac下因为系统换行符和csv.writer添加的一致,所以不会有这个冲突问题。
解决方案
修改你的文件打开方式,在打开文件时指定newline=''参数,让Python不要自动处理换行符,交给csv模块来适配不同系统的换行规则:
import csv def write_csv(file_path, data_list): # 关键是添加 newline='' 参数 with open(file_path, 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerows(data_list)
这样csv.writer会根据当前操作系统自动写入正确的换行符,Windows下不会出现双重换行的情况,Mac也能正常工作。
额外提醒
你读取时做的strip(\n\r\t)、lstrip()、rstrip()这些去除空白字符的操作是没问题的,不会影响写入时的换行问题,主要还是写入环节的文件打开参数需要调整。
内容的提问来源于stack exchange,提问作者user8128927
相关产品推荐
相关产品推荐

