避免打开文本文件出现编码错误的一个小技巧
本帖最后由 txxcat 于 2020-4-22 18:54 编辑Windows7之前的文本文件默认格式是GBK,Windows10的默认格式是utf-8,而Python打开文件默认是GBK,碰到utf-8的文件在读取时候就会报错,反过来,指定utf-8打开碰到GBK的时候又会报错。其实用一下try-except就可以很方便的避开这个错误了,因为当前碰到的编码问题大部分只涉及到这两种,所以下面代码可以应对99%的状况:
def copen(filename):
try:
f = open(filename,encoding='GBK') #用GBK码打开文件
try:
f.read() #尝试读取,如果报错,执行except后的语句
f.seek(0) #如果读取正常,把指针复位
except UnicodeDecodeError:
f = open(filename,encoding='utf-8',errors='ignore') #用utf-8码打开文件,errors='ignore':如果再有错就忽略,估计99.9%的文本文件不是GBK就是UTF-8,但还是要防止剩下的那么一点点可能
except (OSError,AttributeError) as reason: #碰到其他错误报个错
print(str(reason))
return None
return f
f=copen(r'd:\test\test.txt')
if f:
print(f.read()) 没有报错,但是读出来的是乱码怎么解... 斐波纳税 发表于 2020-4-10 21:13
没有报错,但是读出来的是乱码怎么解...
难道是剩下的0.1%?你能把文件传给我分析一下吗? txxcat 发表于 2020-4-10 22:38
难道是剩下的0.1%?你能把文件传给我分析一下吗?
好像不能上传txt,放网盘了
链接: https://pan.baidu.com/s/1WOXsVArBypX1LYrz7AjjnA 提取码: j62h 斐波纳税 发表于 2020-4-11 12:51
好像不能上传txt,放网盘了
链接: https://pan.baidu.com/s/1WOXsVArBypX1LYrz7AjjnA 提取码: j62h
你的文件是GBK的文件,测试了一下,用utf-8强制打开就出现你的那种情况。这段语句不太严谨,只要前三句有任意错误,就会执行后面的utf-8打开的语句,所以我改了一下代码,写成了一个函数。 学到了!这编码很缠人 谢谢,用win10,被这encoding缠了好长时间。。。。
页:
[1]