Python酸洗EOF问题

Posted

技术标签:

【中文标题】Python酸洗EOF问题【英文标题】:Python Pickling EOF issue 【发布时间】:2014-05-06 22:32:56 【问题描述】:

我正在尝试使用以下代码从 pickle 文件中加载用户点。

import pickle
filehandle = True
try:
    pickle_file = open("points.mvm", 'r')
except:
    filehandle = False
if filehandle:
    points = pickle.load(pickle_file)
    pickle_file.close()
else:
    points = 0

但是,它会引发EOFerror。文件肯定在那里,而且似乎也有内容。

【问题讨论】:

Pickle 使用 'wb' 和 'rb' 【参考方案1】:

这应该可行:

import pickle

points = 0

try:
    with open('points.mvm', 'rb') as pickle_file:
        points = pickle.load(pickle_file)
except IOError:
    pass

print points

points += 1

with open('points.mvm', 'wb') as pickle_file:
    pickle.dump(points, pickle_file)

请注意,如果您的目录中仍有 points.mvm 文件,则需要将其删除,因为它可能已损坏(即不是二进制文件),并且会为您提供 EOFError

【讨论】:

当我复制并粘贴代码时,它在第一个 open() 函数上引发了 SyntaxError。发生了什么?

以上是关于Python酸洗EOF问题的主要内容,如果未能解决你的问题,请参考以下文章

了解 Python 中的酸洗

Python 酸洗错误:TypeError:对象泡菜未返回列表。 numpy的问题?

Python酸洗保持对象身份

Python、cPickle、酸洗 lambda 函数

Python多处理队列酸洗错误

如何获取 python 函数的酸洗依赖项?