我尝试使用以下命令打开一些配置文件:
f=open(os.path.join(root, name),mode='rt',errors='ignore')
但是,升级到python 3.5后,我收到以下错误。
for line in f:
File "C:\python35-32\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 57: chara
cter maps to <undefined>
当我使用python 2.7运行时,此代码工作正常。我试图将编码指定为utf8或latin1,但它们现在都没有。如果有人能建议我前进的方向,那会非常有用吗?
如果我可以忽略错误并转到下一行就可以了。我怎样才能跳过错误的部分?
答案 0 :(得分:1)
尝试指定文件open(os.path.join(root, name), encoding='utf-8')
答案 1 :(得分:0)
您可以使用codecs.open
import codecs
f = codecs.open(os.path.join(root, name), mode='rt', encoding='utf-8')
for line in f:
#do something
此外,我不认为问题出在您的代码上,而是使用Windows命令提示符,因为其编码是&#39; cp1252&#39;。我很久以前就遇到过这个问题。基本上,如果您在Windows命令提示符下运行脚本,并且只要代码执行打印功能(打印unicode数据),程序就会崩溃,因为Windows命令提示符无法解码并打印它。
您还可以通过打印原始数据来解决此问题。也就是说,将所有打印功能更改为print("%r" % line)