在终端启动Python时报错的解决方案


Posted in Python onNovember 20, 2020

最近,在终端启动Python时,报了一个错误:

Failed calling sys.__interactivehook__
Traceback (most recent call last):
 File "d:\ProgramData\Anaconda3\lib\site.py", line 439, in register_readline
  readline.read_history_file(history)
 File "d:\ProgramData\Anaconda3\lib\site-packages\pyreadline\rlmain.py", line 165, in read_history_file
  self.mode._history.read_history_file(filename)
 File "d:\ProgramData\Anaconda3\lib\site-packages\pyreadline\lineeditor\history.py", line 82, in read_history_file
  for line in open(filename, 'r'):
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 2167: illegal multibyte sequence

原因是Python的终端历史文件中包含中文,但不能正确使用gbk解码。查看了Python历史文件(系统用户目录下的.python_history),其编码方式为“utf-8”,而”history.py”中读取历史文件时使用的编码方式为“gbk”,所以会报错。 

解决方法

在history.py中使用`for line in open(filename, 'r')`来打开文件并读取每一行,使用的是默认的编码方式。需要根据不同文件的编码方式传入相应的参数值。

1. 首先检测出要打开的文件的编码方式。

在类中定义一个私有方法_get_encoding,作用是检测文件的编码方式,并返回。(需要导入chardet包)

def _get_encoding(self, filename=None):
  	if filename is None:
  		return

  	with open(filename, 'rb') as f:
  		return chardet.detect(f.read())['encoding']

2. 修改历史文件内容的读取

encoding = self._get_encoding(filename)
      
for line in open(filename, 'r', encoding=encoding):
self.add_history(lineobj.ReadLineTextBuff(ensure_unicode(line.rstrip())))

以上就是在终端启动Python时报错的解决方案的详细内容,更多关于终端启动python报错的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python使用Queue在多个子进程间交换数据的方法
Apr 18 Python
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 Python
python中字符串前面加r的作用
Jun 04 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
softmax及python实现过程解析
Sep 30 Python
python生成器推导式用法简单示例
Oct 08 Python
Python运行异常管理解决方案
Mar 09 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
Apr 08 Python
Python 实现将某一列设置为str类型
Jul 14 Python
Python中re模块的元字符使用小结
Apr 07 Python
python 批量下载bilibili视频的gui程序
Nov 20 #Python
Python ellipsis 的用法详解
Nov 20 #Python
python 动态渲染 mysql 配置文件的示例
Nov 20 #Python
Python paramiko使用方法代码汇总
Nov 20 #Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 #Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 #Python
python爬取天气数据的实例详解
Nov 20 #Python
You might like
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
9个JavaScript评级/投票插件
2010/01/18 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
值得收藏的vuejs安装教程
2017/11/21 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
Python 机器学习库 NumPy入门教程
2018/04/19 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
2015/01/01 HTML / CSS
求职信内容考虑哪几点
2013/10/05 职场文书
会计专业推荐信
2013/10/29 职场文书
工厂厂长的职责
2013/12/12 职场文书
奥巴马演讲稿
2014/01/08 职场文书
家长写给孩子的评语
2014/04/18 职场文书
植物生产学专业求职信
2014/08/08 职场文书
学校党员个人问题整改措施思想汇报
2014/10/08 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
《社戏》教学反思
2016/02/22 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android