打开pkl文件提示解码错误解决方法

简介: 打开pkl文件提示解码错误解决方法

具体错误描述

最近在处理一些pkl文件,安装了pickle这个三方库之后,我打算使用pickle.load(open(’XXX‘))的方法来打开pkl文件,结果报错了。pkl文件就是把数据转成二进制进行存储。

pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。

pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化,

pickle序列化后的数据,可读性差,人一般无法识别。说白了Pickle文件就是把数据转成二进制进行存储,是给机器看的不是给人看的。

上述我们已经说过了pickle序列化后的数据是二进制,那也就是说把文件作为二进制存储后,对于文件的读取会非常的快。如果有一个每个sheets为上万行的Excel,当我们直接读取这个excel文件后果你懂得。。有的小伙伴可能会说转成csv后进行读取,是的转csv后确实会比之前的xlsx格式的读取来的快些。但是读取之前计算机依然需要编译后再读取。文件一大还是很慢。那么这时候Pickle的优点就显现出来了。理解的pkl文件是二进制文件后具体看一下报错情况。

报错情况如下:

import pickle
#import cPickle as pickle 
inf = pickle.load(open('/root/气动仿真/NACA0012_DATA/train_max_min.pkl'))
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
Input In [25], in <cell line: 3>()
      1 import pickle
      2 #import cPickle as pickle 
----> 3 inf = pickle.load(open('/root/气动仿真/NACA0012_DATA/train_max_min.pkl'))
File /anaconda3/lib/python3.9/codecs.py:322, in BufferedIncrementalDecoder.decode(self, input, final)
    319 def decode(self, input, final=False):
    320     # decode input (taking the buffer into account)
    321     data = self.buffer + input
--> 322     (result, consumed) = self._buffer_decode(data, self.errors, final)
    323     # keep undecoded input until the next call
    324     self.buffer = data[consumed:]
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

很明显这是一个编码问题,在解码的过程中发生了错误,与此类似的还有一个常见错误如下:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

具体解决方法

报错的原因就是不能正确的解码0x80这个字节了,也就是这个字节超出了utf-8的表示范围了,

inf = pickle.load(open('/root/气动仿真/NACA0012_DATA/train_max_min.pkl'))

在load里面加上了‘rb’就解决了。

解决之后现象

1.# -*- coding: utf-8 -*-
import pickle
#import cPickle as pickle 
inf = pickle.load(open('/root/气动仿真/NACA0012_DATA/train_max_min.pkl','rb'))
print(inf)

微信图片_20221017091215.png



相关文章
|
2月前
进入靶场,出现一张照片,右击查看源代码,发现有一个注释的source.php文件
这段代码实现了一个网站上弹出的促销海报动画效果,包含一个关闭按钮。当促销海报弹出时,会在三秒后开始抖动一两下。海报使用固定定位居中显示,带有阴影和圆角,关闭按钮位于右上角。可以通过修改时间参数调整弹出时间。
19 0
|
6月前
打开xshell无法定位程序输入点。。。。。。。。。。于动态链接库nssock2.dll上解决方法(参考)
打开xshell无法定位程序输入点。。。。。。。。。。于动态链接库nssock2.dll上解决方法(参考)
548 0
|
6月前
|
Ubuntu
这个错误提示是因为`hgctl`工具在尝试打开浏览器时,找不到可执行的`xdg-open`文件
这个错误提示是因为`hgctl`工具在尝试打开浏览器时,找不到可执行的`xdg-open`文件
203 1
|
网络协议 API 开发者
FFmpeg打开输入文件
本文介绍如何使用 FFmpeg 的 API 函数 avformat_open_input,avformat_find_stream_info 来打开跟获取一个输入文件的信息 (AVFormatContext )。
197 0
AppStore 打包上传后提示“二进制文件无效” 的解决方法
昨天提交打包提交App,将包上传到iTunes Connect之后,以为就能发布了,便点击构建版本,发现没有刚刚上传的包,于是就点击"预发行"看一下,会看到"已上传",过不久再刷新一次再看,就变成了二进制无效,无比的郁闷,上传了五六次都是二进制文件无效。
AppStore 打包上传后提示“二进制文件无效” 的解决方法
.昨天提交打包提交App,将包上传到iTunes Connect之后,以为就能发布了,便点击构建版本,发现没有刚刚上传的包,于是就点击"预发行"看一下,会看到"已上传",过不久再刷新一次再看,就变成了二进制无效,无比的郁闷,上传了五六次都是二进制文件无效。
|
Python
Python 使用pyinstaller打包程序失败提示找不到c盘的某个dll文件解决方法,FileNotFoundError: [WinError 2] 系统找不到指定的文件
Python 使用pyinstaller打包程序失败提示找不到c盘的某个dll文件解决方法,FileNotFoundError: [WinError 2] 系统找不到指定的文件
338 0
|
Windows
win11系统用户名称为中文导致文件夹出现繁体字文件夹、系统路径配置错误修改教程(博主亲测,基于win11,系统文件保留)
win11系统用户名称为中文导致文件夹出现繁体字文件夹、系统路径配置错误修改教程(博主亲测,基于win11,系统文件保留)
1155 0
|
编解码 Python
Geany导入带有中文字符的.py文件然后执行报错解决办法
Geany导入带有中文字符的.py文件然后执行报错解决办法
203 0
Geany导入带有中文字符的.py文件然后执行报错解决办法
|
C++
提示编码有问题时,VS保存选项
提示编码有问题时,VS保存选项
72 0