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

时间:2016-01-28 03:27:48

标签: python encoding utf-8 line-breaks

我之前使用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的核心库来实现这一点。我该如何以最优雅的方式做到这一点?

1 个答案:

答案 0 :(得分:5)

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

它提供完整的通用换行支持和TextWrapper模式,用于透明字符串解码/编码。我相信它与open()

的Python 3实现最相似

用法与codecs.open()相同:

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

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