Python读取内容UnicodeDecodeError错误
1、错误现象
环境:Python3.7
描述:
- 用open方法获取文件句柄;
- 用read/readlines方法一次读取文件所有内容;
- 尝试了编码GB2312/GBK/GB18030/UTF-8,发现UnicodeDecodeError报错没有解决。
- 查看读取的文件。是txt的文件,文件大小30-50MB左右。
- 用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、资料查阅
查阅资料过程:
- UnicodeDecodeError为关键字查阅资料。发现几乎所有资料都是指定encoding。
- 查阅python官方文档。文档中关于open方法的说明。然后发现有参数errors。这个参数默认是strict,即有异常即报错。官方文档说明可以设置为ignore,这样忽略错误。
3、错误解决
解决的python代码:
1: In [3]: f = open('test.txt', encoding='GB2312', errors='ignore')
2:
3: In [4]: l = f.readlines()
4:
5: In [5]:
4、回顾
这个问题困扰了我将近半天的时间,发现尝试编码不能解决后,就做别的事情去了。过了一会儿突然就想看看官方说明,然后就发现了官方文档的解决办法。
所以觉得官方文档真的是一个取之不尽用之不竭的宝库。遇到问题多看官方文档,这是一个好习惯。
5、参考
官方参考文档:
- open方法的官方说明:https://docs.python.org/3/library/functions.html#open
- open方法支持的编码说明:https://docs.python.org/3/library/codecs.html#module-codecs
- 关于open方法获取的文件句柄报错处理的参考:https://docs.python.org/3/library/codecs.html#codec-base-classes
Python读取内容UnicodeDecodeError错误的更多相关文章
- Python读取文件编码及内容
Python读取文件编码及内容 最近做一个项目,需要读取文件内容,但是文件的编码方式有可能都不一样.有的使用GBK,有的使用UTF8.所以在不正确读取的时候会出现如下错误: UnicodeDecode ...
- Python运行Google App Engineer时出现的UnicodeDecodeError错误解决方案
#Python运行Google App Engineer时出现的UnicodeDecodeError错误解决方案 ##问题描述 使用Python2.7.x运行GAE时有时会报这个错误 ```py ...
- 解决 python 读取文件乱码问题(UnicodeDecodeError)
解决 python 读取文件乱码问题(UnicodeDecodeError) 确定你的文件的编码,下面的代码将以'utf-8'为例,否则会忽略编码错误导致输出乱码 解决方案一 with open(r' ...
- python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multib
python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multib ...
- 【python】python读取文件报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 2: illegal multibyte sequence
python读取文件报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 2: illegal multibyte ...
- python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multibyte sequence
python读取文件时提示"UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal m ...
- 【转】Python——读取html的table内容
Python——python读取html实战,作业7(python programming) 查看源码,观察html结构 # -*- coding: utf-8 -*- from lxml.html ...
- Python读取文件内容与存储
Python读取与存储文件内容 一..csv文件 读取: import pandas as pd souce_data = pd.read_csv(File_Path) 其中File_path是文件的 ...
- python读取excel中单元格的内容返回的5种类型
(1) 读取单个sheetname的内容. 此部分转自:https://www.cnblogs.com/xxiong1031/p/7069006.html python读取excel中单元格的内容返回 ...
随机推荐
- cocos
cocos compile -p android --android-studio --app-abi=armeabi-v7a ./adb kill-server&& ./adb se ...
- Java反射详解(Spring配置)
1. 反射原理 a).运行时通过 Class c = Class.forName("com.hua.xx.DynTest")加载类文件 b).通过 DynTest t = c.ne ...
- js加密,三种编码方式
·escape(69个):*/@+-._0-9a-zA-Z ·encodeURI(82个):!#$&’()*+,/:;=?@-._~0-9a-zA-Z ·encodeURI ...
- nodejs入门学习笔记二——解决阻塞问题
在最开始,我们要弄清楚node会什么会存在阻塞? node是这么标榜自己的:“在node中除了代码,所有一切都是并行执行的!” 意思是,Node.js可以在不新增额外线程的情况下,依然可以对任务进行并 ...
- linux 跳过登陆修改用户密码
2017-02-11 20:41 6人阅读 评论(0) 收藏 编辑 删除 分类: Linux 版权声明:本文为博主原创文章,未经博主允许不得转载. Linux 系统默认的是有0 1 2 3 ...
- 记秋招第一个offer:去哪儿
9月17日 网申去哪儿,没有内推,因为网申了就不能内推了.难受,内推可以免简历筛选的,这下好了,可能简历直接挂了.我怎么犯了这么低级的错误?还没去搞清楚能不能内推就先傻乎乎地网申了. 9月28日 晚上 ...
- SQL Server date 设置默认值
根据时间做数据统计计算最讨厌开始和结束时间字段是NULL,为了处理NULL要写很多语句. 那么在数据库设计的时候给一个默认值:0001-01-01和9999-12-31,会给开发人员带来很大的便利. ...
- Android应用瘦身
转:https://zhuanlan.zhihu.com/p/25465537 瘦身的目的 从目的导向来看,我们是不会无缘无故去做一件事情的,那我们对应用瘦身的目的是为了什么?答案是:提高下载转化率. ...
- vue-绑定style、css
class.style的绑定1.在 v-bind 用于 class 和 style 时, Vue.js 专门增强了它.表达式的结果类型除了字符串之外,还可以是对象或数组2.绑定css2.1对象绑定2. ...
- LeetCode Rotate Array 翻转数组
题意:给定一个数组,将该数组的后k位移动到前n-k位之前.(本题在编程珠玑中第二章有讲) 思路: 方法一:将后K位用vector容器装起来,再移动前n-k位到后面,再将容器内k位插到前面. class ...