python3:readlines()索引问题?

Python 3.1.2(r312:79147,2010年11月9日,09:41:54) Linux2上的[GCC 4.1.2 20080704(Red Hat 4.1.2-48)] 输入“帮助”,“版权”,“信用”或“许可”以获取更多信息。 >>> open(“/ home / madsc13ntist / test_file.txt”,“r”)。readlines()[6] Traceback(最近一次调用最后一次):   文件“”,第1行,in   在解码中输入文件“/usr/local/lib/python3.1/codecs.py”,第300行     (结果,消耗)= self._buffer_decode(data,self.errors,final) UnicodeDecodeError:'utf8'编解码器无法解码2230位的字节0xae:意外的代码字节 但是... Python 2.4.3(#1,2010年9月8日,11:37:47) Linux2上的[GCC 4.1.2 20080704(Red Hat 4.1.2-48)] 输入“帮助”,“版权”,“信用”或“许可”以获取更多信息。 >>> open(“/ home / madsc13ntist / test_file.txt”,“r”)。readlines()[6] '2010-06-14 21:14:43 613 xxx.xxx.xxx.xxx 200 TCP_NC_MISS 4198 635 GET http www.thelegendssportscomplex.com 80 /thumbnails/t/sponsors/145x138/007.gif - - - DIRECT www.thelegendssportscomplex .com image / gif http://www.thelegendssportscomplex.com/“Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 5.1; Trident / 4.0; .NET CLR 2.0.50727; InfoPath.1; MS-RTC LM 8) “OBSERVED”Sports / Recreation“ - xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx r n' 有没有人知道为什么.readlines()[6]不适用于python-3但在2.4中工作? 还......我以为0xAE是®     
已邀请:
来自Python wiki:   UnicodeDecodeError通常在从特定编码解码str字符串时发生。由于编码只将有限数量的str字符串映射到unicode字符,因此str字符的非法序列将导致编码特定的decode()失败 看起来您的编码与您认为的编码不同。     
开放功能doc:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
使用编码永远读取文件:
open("/home/madsc13ntist/test_file.txt", "r",encoding='iso8859-1').readlines()[6]
忽略解码错误?设置错误='忽略'。 'errors'的默认值为'None',与'strict'相同。     
因为提问问题差不多两年了,你可能已经知道了原因。基本上,Python 3字符串是Unicode字符串。要使它们抽象化,您需要告诉Python该文件使用了什么编码。 Python 2字符串实际上是字节序列,Python可以很好地读取文件中的任何字节。一些字符被解释(换行符,制表符......),但其余字符保持不变。 Python3
open()
类似于Python2
codecs.open()
。 ......现在是时候了......通过接受其中一个答案来结束这个问题。     

要回复问题请先登录注册