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

Bet*_*mos 3 python encoding utf-8 line-breaks

我以前用来os.open()读写文本文件.现在我改用了,codecs.open()因为我想要UTF-8支持.这很好用,但是这种方法在Windows中返回了不同的结果,因为源文件使用\r\n换行符.在我看来,由于它使用二进制模式,因此codecs.open()无法使用通用换行符.

我对这个问题的理解是,os.open()并且codecs.open()具有每个相互排斥的特征.os.open()在文本模式下具有通用换行模式的优点(在读取的情况下意味着它可以替换任何形式的换行\n),而codecs.open()提供UTF-8支持.

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

Ala*_*ack 5

io.open()是的交点os.open()codecs.open().

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

用法与codecs.open():

my_file = io.open("myfile.txt", "w", encoding="utf-8")
Run Code Online (Sandbox Code Playgroud)

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