我正在尝试在我的一个类中放置一个方法,这将允许我pickle和unpickle文件。所以,例如,我有
import pickle
class SomeClass:
def otherMethods:
pass
def save_to_file(self, filename, file_to_save):
with (filename,'wb') as output:
pickle.dump(file_to_save,output,pickle.HIGHEST_PROTOCOL)
print("Data has been saved.")
现在,当我创建一个'SomeClass'的实例时,我希望能够从终端调用如下...
myfile = [1,2,3] # or anything else
SomeClass.save_to_file('myfile.pk',myfile)
然而,抛出的是:
'AttributeError: __exit__'
我看过一些人在使用类似用例时遇到困难的帖子,但我无法弄清楚他们在我的情况下是如何应用的。非常感谢帮助。
答案 0 :(得分:5)
open
缺失:
with open(filename,'wb') as output:
with语句期望上下文管理器使用__enter__
和__exit__
方法,并引发AttributeError
,因为元组(filename,'wb')
没有它们。