有两种方法可以在Python中打开文本文件:
f=open(文件名)
及
导入编解码器
f=编解码器。打开(文件名,encoding=“utf-8”)
什么时候是codecs.open比open更可取
自Python2.6以来,一个好的实践是使用io.open(),它还接受一个encoding参数,就像现在过时的codecs.open()。在Python3中,io.open是内置的open()的别名。因此,io.open()适用于Python2.6和所有更高版本,包括Python3.4。见文件:http://docs.python.org/3.4/library/io.html
现在,对于最初的问题:在阅读Python 2中的文本(包括“纯文本”、HTML、XML和JSON)时,您应该始终使用io.open()进行显式编码,或者在Python 3中使用open()进行显式编码。这样做意味着您可以正确地解码Unicode,或者立即得到一个错误,从而使调试更加容易
纯ASCII“纯文本”是来自遥远过去的神话。正确的英文文本使用卷曲引号、em破折号、项目符号、欧元符号,甚至是分音符。别天真了!(别忘了立面设计模式!)
由于纯ASCII不是一个实际选项,因此没有显式编码的open()仅对读取二进制文件有用