在终端启动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中无限元素列表的实现方法
Aug 18 Python
python根据日期返回星期几的方法
Jul 06 Python
Python简明入门教程
Aug 04 Python
Python3.6正式版新特性预览
Dec 15 Python
python 第三方库的安装及pip的使用详解
May 11 Python
Python之re操作方法(详解)
Jun 14 Python
python机器学习之神经网络(一)
Dec 20 Python
python leetcode 字符串相乘实例详解
Sep 03 Python
python 一个figure上显示多个图像的实例
Jul 08 Python
Python内存管理实例分析
Jul 10 Python
numpy中的meshgrid函数的使用
Jul 31 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
Feb 18 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中截取中文字符串的代码小结
2011/07/17 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
PHP+APACHE实现网址伪静态
2015/02/22 PHP
PHP中的session安全吗?
2016/01/22 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
菜鸟javascript基础整理1
2010/12/06 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
Bootstrap基础学习
2015/06/16 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
python机器学习之神经网络(三)
2017/12/20 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
活动总结报告格式
2014/05/09 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
个人总结与自我评价
2015/02/14 职场文书
领导新年致辞2016
2015/07/29 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL
无线电知识基础入门篇
2022/02/18 无线电
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python