【发布时间】:2014-03-12 19:22:45
【问题描述】:
当我在 Windows 上使用 Python 的 csv.DictWriter.writerows 时,行之间会添加空换行符。我该如何阻止它?该代码在 Linux 上运行良好。
【问题讨论】:
-
你如何打开要写入的文件?
-
为什么是
+;你也在读它吗? -
调试时看书的时候剩下的啊
当我在 Windows 上使用 Python 的 csv.DictWriter.writerows 时,行之间会添加空换行符。我该如何阻止它?该代码在 Linux 上运行良好。
【问题讨论】:
+;你也在读它吗?
在 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\nlinendings 的平台上将添加额外的\r。指定newline=''应该始终是安全的,因为 csv 模块自己(通用)换行处理。
【讨论】: