我已经将Ubuntu从14.04 (Python3.4.3)升级到16.04 (Python3.5.2)。现在,我的脚本无法读取编码cp1251的文件:
with open(fs[0], encoding='cp1251') as f:
lines = f.readlines()
f.close()它给出了一个错误:
Traceback (most recent call last):
File "/home/michael/PycharmProjects/Rad/get_info.py", line 9, in <module>
r.get_tests()
File "/home/michael/PycharmProjects/Rad/rad.py", line 166, in get_tests
s = f.readlines()
File "/usr/lib/python3.5/encodings/cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 13: character maps to <undefined>
Process finished with exit code 1调试将导致文件/usr/lib/python3.5/encodings/cp1251.py中的此代码
class IncrementalDecoder(codecs.IncrementalDecoder):
def decode(self, input, final=False):
return codecs.charmap_decode(input,self.errors,decoding_table)[0]在这个Python版本中更改了什么,以及如何避免此错误?
发布于 2017-12-09 15:20:43
因此,我发现一种方法修复了这个在Python2和3中都有效的错误:
import codecs
...........
with codecs.open(fs[0], encoding='cp1251', errors='replace') as f:
lines = f.readlines()
f.close()https://stackoverflow.com/questions/47729452
复制相似问题