在终端启动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开发之thread线程基础实例入门
Nov 11 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
Python中几种导入模块的方式总结
Apr 27 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
python实现连连看辅助(图像识别)
Mar 25 Python
解决Pytorch 加载训练好的模型 遇到的error问题
Jan 10 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
Python操作Excel把数据分给sheet
May 20 Python
为什么是 Python -m
Jun 19 Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 Python
python学习之panda数据分析核心支持库
May 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
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
深入认识JavaScript中的函数
2007/01/22 Javascript
取键盘键位ASCII码的网页
2007/07/30 Javascript
jquery each()源代码
2011/02/14 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
Angular整合zTree的示例代码
2018/01/24 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
python入门之基础语法学习笔记
2020/02/08 Python
python 安装impala包步骤
2020/03/28 Python
企划专员岗位职责
2013/12/09 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
教师继续教育反思周记
2015/06/25 职场文书
消防安全培训工作总结
2015/10/23 职场文书
python基础之匿名函数详解
2021/04/21 Python
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫