在 Python 2 中读取带有通用换行符的 UTF-8 文件

Reading UTF-8 file with universal newlines in Python 2

我以前用os.open()读写文本文件。现在我改为使用 codecs.open() 因为我想要 UTF-8 支持。这很有效,但此方法在 Windows 中返回了不同的结果,因为源文件使用了 \r\n 换行符。在我看来,codecs.open() 通用换行符不可用 because it uses binary mode.

我对问题的理解是os.open()codecs.open()具有互斥的特性。 os.open() 在文本模式下具有 universal newline mode 的优点(在阅读的情况下意味着它将任何形式的换行符替换为 \n),而 codecs.open() 提供UTF-8 支持。

我的目标是将 UTF-8 编码文件读取(最好是写入)为带有通用换行符的 unicode 字符串。这意味着如果我读取两个具有不同换行符的文件,则生成的字符串应该相同。我只想使用具有 Python 2.6 兼容性的核心库来执行此操作。我该如何以最优雅的方式做到这一点?

io.open()os.open()codecs.open()的交集。

它为透明字符串提供完整的通用换行支持和 TextWrapper 模式 decode/encode。我认为它与 open()

的 Python 3 实现最相似

用法同codecs.open():

my_file = io.open("myfile.txt", "w", encoding="utf-8")

文本模式和通用换行符是默认选项。