使用 open() 时如何在 Python 2.7 中禁用通用换行符

How to disable universal newlines in Python 2.7 when using open()

我有一个 csv 文件,其中包含两个不同的换行符终止符(\n\r\n)。我希望我的 Python 脚本使用 \r\n 作为换行符而不是 \n。但问题是,当我使用 open().

打开文件时,Python 的通用换行符功能一直将所有内容标准化为 \n

奇怪的是,当我编写这个脚本时,它从未用于规范我的换行符,这就是为什么我使用 Python 2.7 并且它工作正常。但是今天突然间它开始正常化所有内容并且我的脚本不再按需要工作。

如何在使用 open() 打开文件时禁用通用换行符(不以二进制模式打开)?

您需要以二进制模式打开文件,如模块文档中所述:

with open(csvfilename, 'rb') as fileobj:
    reader = csv.reader(fileobj)

来自csv.reader() documentation

If csvfile is a file object, it must be opened with the ‘b’ flag on platforms where that makes a difference.

在二进制模式下,不会进行行分隔符转换。