Python使用csv模块写入文件出现多余空行的原因及解决方法
空行产生的原因
这个问题是Python中csv模块与文本文件默认换行处理逻辑冲突导致的:
在Windows平台下,文本模式打开的文件默认会自动将写入的\n换行符转换为系统默认的\r\n换行序列;而csv模块的writer对象在写入每一行数据时,本身就会自动追加一个换行符。二者叠加后,每行末尾实际会被写入\r\r\n,打开文件时就会表现为两行内容之间多出一个空行。
解决方案
Python 3 环境(主流使用场景)
在调用open函数打开写入的csv文件时,新增newline=''参数,即可禁用文件对象的自动换行转换逻辑,只保留csv模块自带的换行处理:
import csv # bMap为已经修改后的按键配置列表 f = open('bMap.csv', 'w', newline='', encoding='utf-8') writer = csv.writer(f, delimiter=',', quotechar='|') writer.writerows(bMap) f.close()
额外补充的encoding='utf-8'参数可以避免后续如果有特殊字符绑定配置时出现乱码问题,属于可选优化项。
Python 2 环境
如果仍在使用Python2,将打开文件的模式从文本模式w改为二进制模式wb即可:
f = open('bMap.csv', 'wb') writer = csv.writer(f, delimiter=',', quotechar='|') writer.writerows(bMap) f.close()
内容的提问来源于stack exchange,提问作者Atlantic
相关产品推荐
相关产品推荐

