我之前使用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的核心库来实现这一点。我该如何以最优雅的方式做到这一点?
答案 0 :(得分:5)
io.open()
是os.open()
和codecs.open()
的交集。
它提供完整的通用换行支持和TextWrapper模式,用于透明字符串解码/编码。我相信它与open()
用法与codecs.open()
相同:
my_file = io.open("myfile.txt", "w", encoding="utf-8")
文本模式和通用换行符是默认选项。