例如,我有两个字典
,这是我尝试过的:
def unpickle(filename):
open = open(filename, "rb")
Dic1 = cPickle.load(open)
Dic2 = cPickle.load(open)
open.close()
return Dic1,Dict2
但是当我想在另一个函数中解压时它会出错。它说无效的加载键,'m'
啊,所以发生的事情是您打开文件一次并关闭它一次,但使用它两次。我采用了自己的 unpickle 函数并尝试创建两件事,但它给了我一个错误。
这是我在使用您以前的功能时遇到的错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in pickleLoad
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1378, in load
return Unpickler(file).load()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 880, in load_eof
raise EOFError
EOFError
但是当我这样编辑它时,它工作正常:
import cPickle
def unpickle(filename):
open_first = open(filename, "rb")
Dic1 = cPickle.load(open_first)
open_again = open(filename, "rb")
Dic2 = cPickle.load(open_again)
open_first.close()
open_again.close()
return Dic1,Dic2
但是您的函数在两个变量中返回相同的内容,因为我们只有一个参数,即filename
.. 来解开文件:
def unpickle(filename):
f = open(filename, "rb")
d = cPickle.load(f)
f.close()
return d