如何阻止Python的csv.DictWriter.writerows在Windows中的行之间添加空行?

时间:2014-03-12 19:22:45

标签: python windows csv

当我在Windows上使用Python的csv.DictWriter.writerows时,行之间会添加空的换行符。我怎么阻止它?该代码在Linux上运行良好。

1 个答案:

答案 0 :(得分:14)

  • 在Python 2中:始终以二进制模式打开文件; csv.DictWriter()\r\n行结尾:

    with open(filename, 'ab') as outputfile:
        writer = csv.DictWriter(outputfile, fieldnames)
    

    来自csv.writer() documentation

      

    如果 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模块会执行自己的(通用)换行处理。