当我在Windows上使用Python的csv.DictWriter.writerows
时,行之间会添加空的换行符。我怎么阻止它?该代码在Linux上运行良好。
答案 0 :(得分:14)
在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()
documenation:
如果 csvfile 是文件对象,则应使用
newline=''
打开[...]
如果未指定
newline=''
,则无法正确解释引用字段中嵌入的换行符,并且在写入时使用\r\n
换行符的平台上将添加额外的\r
。指定newline=''
应始终是安全的,因为csv模块会执行自己的(通用)换行处理。