Python读取内容UnicodeDecodeError错误

1、错误现象

环境:Python3.7

描述:

  1. 用open方法获取文件句柄;
  2. 用read/readlines方法一次读取文件所有内容;
  3. 尝试了编码GB2312/GBK/GB18030/UTF-8,发现UnicodeDecodeError报错没有解决。
  4. 查看读取的文件。是txt的文件,文件大小30-50MB左右。
  5. 用notepad++打开这个文件,发现正常打开,发现编码是GB2312

下面是报错过程:

Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)]
Type ‘copyright‘, ‘credits‘ or ‘license‘ for more information
IPython 7.3.0 -- An enhanced Interactive Python. Type ‘?‘ for help.

In [1]: f = open(‘test.txt‘, encoding=‘GB2312‘)

In [2]: lines = f.readlines()
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-2-d1e99c5e7da7> in <module>
----> 1 lines = f.readlines()

UnicodeDecodeError: ‘gb2312‘ codec can‘t decode byte 0xf4 in position 7927: illegal multibyte sequence

2、资料查阅

查阅资料过程:

  1. UnicodeDecodeError为关键字查阅资料。发现几乎所有资料都是指定encoding。
  2. 查阅python官方文档。文档中关于open方法的说明。然后发现有参数errors。这个参数默认是strict,即有异常即报错。官方文档说明可以设置为ignore,这样忽略错误。

3、错误解决

解决的python代码:

In [5]: f = open(‘test.txt‘, encoding=‘GB2312‘, errors=‘ignore‘)

In [6]: l = f.readlines()

In [7]:

4、回顾

这个问题困扰了我将近半天的时间,发现尝试编码不能解决后,就做别的事情去了。过了一会儿突然就想看看官方说明,然后就发现了官方文档的解决办法。

所以觉得官方文档真的是一个取之不尽用之不竭的宝库。遇到问题多看官方文档,这是一个好习惯。

5、参考

官方参考文档:

  1. open方法的官方说明:https://docs.python.org/3/library/functions.html#open
  2. open方法支持的编码说明:https://docs.python.org/3/library/codecs.html#module-codecs
  3. 关于open方法获取的文件句柄报错处理的参考:https://docs.python.org/3/library/codecs.html#codec-base-classes

原文地址:https://www.cnblogs.com/mehome/p/10549798.html

时间: 2024-08-30 00:30:16

Python读取内容UnicodeDecodeError错误的相关文章

Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案)

很多情况下我们是这样读取文本文件的: with open(r'F:\.Python Project\spidertest1\test\pdd凉席.txt', 'r') as f: text = f.read()但是如果该文本文件是gbk格式的,那么将会报以下错误: Traceback (most recent call last): File "F:/.Python Project/spidertest1/test/MyTest4.py", line 14, in <module

Python读取txt文件报错:UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0xc8 in position 0

Python使用open读取txt中文内容的文件时,有可能会报错,报错内容如下:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0. 这里举一个例子:txt=open("threekingdoms.txt","r",encoding="utf-8").read(),在运行时就会报错. 要处理这个问题有两个办法,如下: 第一个办法,将编码方式由utf-8改为g

解决Python读取文件时出现UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte...

用Python在读取某个html文件时会遇到下面问题: 出问题的代码: 1 if __name__ == '__main__': 2 fileHandler = open('../report.html', mode='r') 3 4 report_lines = fileHandler.readlines() 5 for line in report_lines: 6 print(line.rstrip()) 修改方式是在open方法指定参数encoding='UTF-8': if __nam

python 读取文件时报错UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0x80 in position 205: illegal multibyte sequence

python读写txt文件转化成excel文件 python读取文件时提示"UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multibyte sequence" 解决办法1. FILE_OBJECT= open('order.log','r', encoding='UTF-8') 解决办法2. FILE_OBJECT= open('order.log','rb') pyth

Python读取中文txt文件错误:UnicodeEncodeError: &#39;gbk&#39; codec can&#39;t encode character

1 with open(file,'r') as f: 2 line=f.readline() 3 i=1 4 while line: 5 line=line.decode('utf-8') 6 print str(i)+": "+line7 line=f.readline() 8 i=i+1 用以上代码读取一个包含中文的txt文件时,在正确地读取并打印了六百多行之后,print str(i)+": "+line这一行报错: UnicodeEncodeError:

使用configparser读取带有中文的配置文件出现UnicodeDecodeError错误

问题: 使用configparser读取配置文件时,出现UnicodeDecodeError错误,在没有任何中文的时候读取可以的,加了1句中文注释后就抛出异常,异常如下: UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multib 解决方法 注意 对于有BOM(如Windows下用记事本指定为utf-8)的文件,需要使用 utf-8-sig,即把encoding=utf-8 改为 e

python 读取文件时报错: UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xa4 in position 127: illegal multibyte sequence

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 127: illegal multibyte sequence python读取文件时提示UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 127: illegal multibyte sequence 解决办法: FILE_OBJECT= open('order.log','r'

Python读取CSV文件,报错:UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xa7 in position 727: illegal multibyte sequence

Python读取CSV文件,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 727: illegal multibyte sequence 解决办法: 在语句open(sFileName,newline='')中,增加encoding='UTF-8',如下: open(sFileName,newline='',encoding='UTF-8') Python读取CSV文件,报错:UnicodeDecode

Python 读取csv报错编码问题 : UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0x87 in position 10: invalid start byte

1.报错信息 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x87 in position 10: invalid start byte 2.解决方法 查找相关资料,发现一个棒棒的解决方法: 首先把csv文件以记事本的格式打开,默认保存是ANSI编码,我们应该手动修改成utf-8 ===>(如果记事本打开后是乱码,我们可以把csv数据粘贴到记事本上后保存) 3.接下来可以愉快的读文件咯 with csv23.open_csv(r'C:\