2017-03-17 86 views
0

当蟒蛇打开文件,我得到的错误:打开文件在Python错误

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128) 

我的代码是

p=open("afile.txt","r") 
file=p.read() 
+6

[UnicodeEncodeError:'ascii'编解码器无法在位置20编码字符u'\ xa0':序号不在范围(128)]中可能的重复(http://stackoverflow.com/questions/9942594/unicodeencodeerror- ascii-codec -cant-encode-character -u-xa0-in-position-20) –

回答

0

这是一个UnicodeError。您正尝试使用ASCII编解码器读取Unicode字符。

尝试:

import codecs 

p = codecs.open("afile.txt", "r", "utf-8") 
f = p.read() 

import codecs 

p = codecs.open("afile.txt", "r", "utf-16") 
f = p.read() 

你应该也可能考虑使用:

with codecs.open("afile.txt", "r", "utf-8") as f: 
    # Do whatever you want with f 

这使得它能够自​​动关闭的文件,当您退出with声明。

你也可以试试iso-8859-15cp437看看https://pypi.python.org/pypi/chardethttps://docs.python.org/3/library/codecs.html#codecs.open

+0

当我使用这个时,我得到TypeError:一个整数是必需的(得到类型str) –

+0

@MaxCoates现在尝试它。更新为使用编解码器包 – cmeadows

+0

谢谢,现在工作:) –