在终端启动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文件夹与文件的操作实现代码
Jul 13 Python
单链表反转python实现代码示例
Feb 08 Python
Python带动态参数功能的sqlite工具类
May 26 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
利用Pytorch实现简单的线性回归算法
Jan 15 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
关于Keras Dense层整理
May 21 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
Jun 28 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
Python fileinput模块如何逐行读取多个文件
Oct 05 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 Python
pandas中pd.groupby()的用法详解
Jun 16 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
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
PHP防CC攻击实现代码
2011/12/29 PHP
php格式化金额函数分享
2015/02/02 PHP
微信支付开发订单查询实例
2016/07/12 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
微信小程序如何获取手机验证码
2018/11/04 Javascript
js实现时间日期校验
2020/05/26 Javascript
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
Python self用法详解
2020/11/28 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
项目专员岗位职责
2013/12/04 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
论群众路线学习笔记
2014/11/06 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript