首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输入耗尽

输入耗尽
EN

Stack Overflow用户
提问于 2022-01-02 01:44:08
回答 1查看 88关注 0票数 0

在生成Huffman树之后,我使用pickle.dumps创建了一个二进制文件,但是现在我无法加载该文件,并且我不理解错误消息:第5行,在tree = pickle.load(file_handle) EOFError: Ran输入中

代码语言:javascript
复制
import pickle
from compress import node
with open("binary.bin", "rb") as file_handle:
    data = pickle.load(file_handle)
    tree = pickle.load(file_handle)

这是创建二进制文件的代码:

代码语言:javascript
复制
import pickle
q = {}
a_file = open("george.txt", 'r')
for line in a_file:
    key, value = line.split()

    q[key] = value


class node:
    def __init__(self, freq, symbol, left=None, right=None):
        self.freq = freq

        self.symbol = symbol

        self.left = left

        self.right = right

        self.huff = ''


def printNodes(node, val=''):
    newVal = val + str(node.huff)
    if(node.left):
        printNodes(node.left, newVal)
    if(node.right):
        printNodes(node.right, newVal)

    if(not node.left and not node.right):
        print(f"{node.symbol} -> {newVal}")


chars = ['a', 'b', 'c', 'd', 'e', 'f']

freq = [q['a'], q['b'], q['c'], q['d'], q['e'], q['f']]

nodes = []

for x in range(len(chars)):
    nodes.append(node(freq[x], chars[x]))

while len(nodes) > 1:
    nodes = sorted(nodes, key=lambda x: x.freq)

    left = nodes[0]
    right = nodes[1]
    left.huff = 0
    right.huff = 1
    newNode = node(left.freq+right.freq, left.symbol+right.symbol, left, right)
    nodes.remove(left)
    nodes.remove(right)
    nodes.append(newNode)

with open('binary.bin', 'wb') as f:
    b = pickle.dumps(nodes[0])
    f.write(b)
EN

回答 1

Stack Overflow用户

发布于 2022-01-02 01:56:10

这有点棘手,并在文档中进行了描述。

https://docs.python.org/3/library/pickle.html#what-can-be-pickled-and-unpickled

请记住,解泡剂进程必须重新创建您所腌制的对象。它只能在找到原始类的情况下才能这样做。否则,您的对象将没有任何方法。如果class node是在您的主模块中定义的,或者如果您有from module import node,那么它应该可以很好地解锁。但是,例如,如果您有一个对自身进行腌制的类,则泡菜不知道该类来自哪个模块,因此它无法找到重新创建对象的类。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70553079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档