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

5 投票
1 回答
3656 浏览
提问于 2025-04-17 22:00

我在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)
    

    根据csv.writer()的说明

    如果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模块会自己处理换行符。

撰写回答