python在进交互UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 166?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python在进交互UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 166?相关的知识,希望对你有一定的参考价值。

(base) C:\Users\wangwenjing>python
Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
Failed calling sys.__interactivehook__
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site.py", line 440, in register_readline
readline.read_history_file(history)
File "C:\ProgramData\Anaconda3\lib\site-packages\pyreadline\rlmain.py", line 165, in read_history_file
self.mode._history.read_history_file(filename)
File "C:\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 0x99 in position 166: illegal multibyte sequence
>>>

参考技术A

这个错误通常是由于Python解释器无法将输入的字节序列解码为Unicode字符串,而导致的。它通常是因为编码不匹配导致的,比如在GBK编码下输入了一个无法解码的字节。

解决此问题的方法是将Python解释器的编码设置为匹配输入的编码。可以使用以下方法来解决该问题:

    在终端或控制台输入以下命令设置Python解释器的编码为UTF-8:

    javascriptCopy codeexport PYTHONIOENCODING=UTF-8

    如果在IDE中使用Python,则需要设置IDE的编码以匹配输入。例如,使用PyCharm时,可以在“Settings”中的“Editor”部分下的“File Encoding”选项卡中设置文件编码和控制台编码为UTF-8。

    如果输入来自于文件,则需要确保文件编码与Python解释器编码匹配。可以在文件头中添加编码声明来指定文件编码。例如,在文件的第一行添加以下内容:

    markdownCopy code# -*- coding: utf-8 -*-

    这将告诉Python解释器使用UTF-8编码解析文件。如果文件使用其他编码,则需要相应更改编码声明。

    通过上述方法设置编码后,就可以避免出现UnicodeDecodeError错误。

参考技术B 说明你文件内容并不完全符合gbk编码啊

Python交互式编程

Python之ipython、notebook、matplotlib安装使用

交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码。

  • linux上你只需要在命令行中输入 Python 命令即可启动交互式编程

  • Window上在安装Python时已经已经安装了默认的交互式编程客户端

备注:> 中文编码
#!/usr/bin/python# -*- coding: UTF-8 -*-

以下进行逐步安装配置

python 3.5.2, ipython 5.1.0, jupyter notebook, matplotlib

1、安装python3.5

具体安装请参考官方文档。安装程序时注意勾选配置环境变量。https://www.python.org/downloads/windows/

2、升级pip

python -m pip install --upgrade pip

3、使用pip安装ipython

pip.exe install ipython

    交互模式效果如下

D:\tools>ipython
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)]Type "copyright", "credits" or "license" for more information.
IPython 5.1.0 -- An enhanced Interactive Python.?         -> Introduction and overview of IPython‘s features.
%quickref -> Quick reference.
help      -> Python‘s own help system.
object?   -> Details about ‘object‘, use ‘object??‘ for extra details.In [1]: print(‘hello world!‘)
hello world!In [2]: a = [‘Windows‘,‘10‘,‘Python‘,‘3.5.2‘,‘ipython‘,‘jupyter notebook‘]In [3]: aOut[3]: [‘Windows‘, ‘10‘, ‘Python‘, ‘3.5.2‘, ‘ipython‘, ‘jupyter notebook‘]In [4]: for i in a:
   ...:     print(i)
   ...:
Windows10Python3.5.2ipython
jupyter notebookIn [5]:

4、使用pip安装notebook

pip install notebook

    提示已成功安装的包和版本

Installing collected packages: jupyter-core, MarkupSafe, jinja2, jsonschema, nbformat, entrypoints, mistune, nbconvert, tornado, pyzmq, jupyter-client, ipykernel, notebook
  Running setup.py install for MarkupSafe ... done
Successfully installed MarkupSafe-0.23 entrypoints-0.2.2 ipykernel-4.5.0 jinja2-2.8 jsonschema-2.5.1 jupyter-client-4.4.0 jupyter-core-4.2.0 mistune-0.7.3 nbconvert-4.2.0 nbformat-4.1.0 notebook-4.2.3 pyzmq-15.4.0 tornado-4.4.2

    在工作目录下启动notebook

jupyter notebook

D:\tools>jupyter notebook
[W 07:44:23.940 NotebookApp] Widgets are unavailable. Please install widgetsnbextension or ipywidgets 4.0[I 07:44:23.955 NotebookApp] The port 8888 is already in use, trying another port.
[I 07:44:24.143 NotebookApp] Serving notebooks from local directory: D:\tools
[I 07:44:24.143 NotebookApp] 0 active kernels
[I 07:44:24.143 NotebookApp] The Jupyter Notebook is running at: http://localhost:8889/
[I 07:44:24.143 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

    web

技术分享

5、安装画图工具 matplotlib

pip install matplotlib
pip install matplotlib --upgrade

    结果提示

Installing collected packages: cycler, pytz, pyparsing, numpy, python-dateutil, matplotlib
Successfully installed cycler-0.10.0 matplotlib-1.5.3 numpy-1.11.2 pyparsing-2.1.10 python-dateutil-2.5.3 pytz-2016.7

6、测试

b图像测试代码来源:

https://my.oschina.net/bery/blog/203595

import numpy as np
import matplotlib.pyplot as plt
N = 5
menMeans = (20, 35, 30, 35, 27)
menStd =   (2, 3, 4, 1, 2)
ind = np.arange(N)  # the x locations for the groups
width = 0.35       # the width of the bars
fig, ax = plt.subplots()
rects1 = ax.bar(ind, menMeans, width, color=‘r‘, yerr=menStd)
womenMeans = (25, 32, 34, 20, 25)
womenStd =   (3, 5, 2, 3, 3)
rects2 = ax.bar(ind+width, womenMeans, width, color=‘y‘, yerr=womenStd)
# add some
ax.set_ylabel(‘Scores‘)
ax.set_title(‘Scores by group and gender‘)
ax.set_xticks(ind+width)
ax.set_xticklabels( (‘G1‘, ‘G2‘, ‘G3‘, ‘G4‘, ‘G5‘) )
ax.legend( (rects1[0], rects2[0]), (‘Men‘, ‘Women‘) )
def autolabel(rects):
    # attach some text labels
    for rect in rects:
        height = rect.get_height()
        ax.text(rect.get_x()+rect.get_width()/2., 1.05*height, ‘%d‘%int(height),
                ha=‘center‘, va=‘bottom‘)
autolabel(rects1)
autolabel(rects2)
plt.show()

技术分享

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(9)
y = np.sin(x)
plt.plot(x,y)
plt.show()

技术分享



本文出自 “随心” 博客,请务必保留此出处http://bennychen.blog.51cto.com/6323894/1860258

以上是关于python在进交互UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 166?的主要内容,如果未能解决你的问题,请参考以下文章

Python|理解折半插入排序

Python全栈自动化系列之Python编程基础(模块和包)

python交互窗口在哪

Python交互式编程

python中命令行模式和交互模式

012Python与用户交互