在终端启动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入门教程
Feb 08 Python
python实现简单的TCP代理服务器
Oct 08 Python
详解Python import方法引入模块的实例
Aug 02 Python
快速了解python leveldb
Jan 18 Python
Django中使用celery完成异步任务的示例代码
Jan 23 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
Aug 09 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
关于python中plt.hist参数的使用详解
Nov 28 Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
Python 随机按键模拟2小时
Dec 30 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
总结PHP中数值计算的注意事项
2016/08/14 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
新浪的图片新闻效果
2007/01/13 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
浅谈javascript的调试
2015/01/28 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
全面解析JavaScript中“&&”和“||”操作符(总结篇)
2016/07/18 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
python中执行shell命令的几个方法小结
2014/09/18 Python
python函数局部变量用法实例分析
2015/08/04 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
优秀党员转正的自我评价
2013/10/06 职场文书
网页美工求职信范文
2014/04/17 职场文书
户外宣传策划方案
2014/05/25 职场文书
机械专业技术员求职信
2014/06/14 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
2015年调度员工作总结
2015/04/30 职场文书
电影建党伟业观后感
2015/06/01 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书