【问题标题】:Pickle-loading more than 1 line of pkl model filePickle-加载多于 1 行的 pkl 模型文件
【发布时间】:2019-08-20 00:56:13
【问题描述】:

使用 Notepad++ 打开时,有问题的文件有这样的行:

€X   Neural Networksq .€]q (X   ClassificationqKX      Team1 winq]q(X   Team1qX   Team2qe]q(X
Team1_rankqX
Team2_rankqX   Diff1q   X   Diff2q
e}q(hcpandas.core.indexes.base
_new_Index
qcpandas.core.indexes.base
Index
q

等等。 pkl文件中有很多上面没有显示的符号。

以下是我尝试将文件读取/解析为可读的代码:

带泡菜:

import pickle; pickle.HIGHEST_PROTOCOL
with open(r"somefile.pkl", 'rb') as f:
data = pickle.load(f)
print (data)

与熊猫:

import pandas as pd
up_df = pd.read_pickle(r"somefile.pkl")
print (up_df)

在这两种情况下,我都会得到一个只写“神经网络”的 str 对象

我的somefile.pkl 大小为 63kb,显然有字节码? (猜测是)在里面。如何将其转换为可读的内容?

【问题讨论】:

  • 可能您的 pkl 文件已损坏?
  • @FarhoodET 它在输入.exe 时按预期工作,所以这不太可能。

标签: python python-3.x pandas scikit-learn pickle


【解决方案1】:

也许泡菜文件附加了多个对象。尝试类似 -

objects = []
with open(filename, 'rb') as f:
data = pickle.load(f)
    while True:
        try:
            objects.append(pickle.load(filename))
        except EOFError:
            break

参考How to read pickle file?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2022-01-12
    • 2011-03-01
    相关资源
    最近更新 更多