如何防止Python的csv.DictWriter.writerows在Windows中添加空行?
我在Windows上使用Python的csv.DictWriter.writerows
时,发现每行之间多了空行。请问怎么才能去掉这些空行?在Linux上运行这个代码就没问题。
1 个回答
16
在Python 2中:打开文件时一定要用二进制模式;因为
csv.DictWriter()
会写入\r\n
作为换行符:with open(filename, 'ab') as outputfile: writer = csv.DictWriter(outputfile, fieldnames)
如果csvfile是一个文件对象,必须在某些平台上用‘b’标志打开它,这样才有效。
在Python 3中:打开文件时要加上
newline=''
,这样csv.DictWriter()
就可以控制写入的换行符,不会被转换:with open(filename, 'a', newline='') as outputfile: writer = csv.DictWriter(outputfile, fieldnames)
同样,引用一下相关的
csv.writer()
的说明:如果csvfile是一个文件对象,应该用
newline=''
打开。[ ... ]
如果没有指定
newline=''
,在引号内的换行符可能会被错误处理,并且在使用\r\n
作为换行符的平台上,会多加一个\r
。指定newline=''
是安全的,因为csv模块会自己处理换行符。