我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

使用python读写一个已知文件的时候,可能会报错不能识别的格式。那么该如何处理呢?

苏南大叔:python文件读取报错UnicodeDecodeError,该如何处理? - python-io-unicodedecodeerror
python文件读取报错UnicodeDecodeError,该如何处理?(图2-1)

大家好,我是苏南大叔,欢迎阅读苏南大叔的“程序如何灵动”博客。本文中,苏南大叔将要描述一个非常常见的python文件读写,指定格式的问题。

本文测试环境:win10python@3.6.8

报错信息

测试代码如下:

with open('data/stopwords.txt', 'r') as f:
    lines_list = f.readlines()

报错信息如下:

UnicodeDecodeError: 'gbk' codec can't decode byte 0x9c in position 7: illegal multibyte sequence

苏南大叔:python文件读取报错UnicodeDecodeError,该如何处理? - 文件解析失败
python文件读取报错UnicodeDecodeError,该如何处理?(图2-2)

解决方案

解决方案很简单,在open函数中添加第三个参数encoding。当然一般来说,encoding都是utf8,而代码中默认使用了gbk处理。

测试代码变成如下所示:

with open('data/stopwords.txt', 'r', encoding='UTF-8') as f:
    lines_list = f.readlines()

测试成功,解决问题。

下面的代码是另外一个写法的例子:

import os
_path = os.path.join(os.getcwd(), "data/stopwords.txt")
text = open(_path, 'r', encoding='UTF-8').read()

这里还有一个新的写法:

stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]

相关链接

总结

挺常见的报错情况,在打开一个文件的时候,指定一下字符集utf8。当然,也不排除字符集是比较不常见的gbk的情况,这里不抬杠啊。大家根据自己的实际情况修改即可。

助理微信

微信打赏码

微信公众号

微信小程序

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python