在终端启动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通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
举例讲解Python中metaclass元类的创建与使用
Jun 30 Python
在Python中通过threading模块定义和调用线程的方法
Jul 12 Python
Django之模型层多表操作的实现
Jan 08 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
Oct 06 Python
如何提高python 中for循环的效率
Apr 15 Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 Python
python实现图片,视频人脸识别(dlib版)
Nov 18 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 Python
opencv-python图像配准(匹配和叠加)的实现
Jun 23 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 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
短波收音机简介
2021/03/01 无线电
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
用于table内容排序
2006/07/21 Javascript
新浪的图片新闻效果
2007/01/13 Javascript
学习ExtJS Window常用方法
2009/10/07 Javascript
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
Angular2 父子组件数据通信实例
2017/06/22 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
Django发送html邮件的方法
2015/05/26 Python
python文件与目录操作实例详解
2016/02/22 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
python 同时运行多个程序的实例
2019/01/07 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
python IDLE添加行号显示教程
2020/04/25 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
婚纱摄影师求职信
2014/03/07 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server