我使用dill.dump_session(filename)
转储了Jupyter Notebook会话,有一次它告诉我磁盘存储已满。但是,我在磁盘上留出一些空间,然后重试。现在,我无法使用dill.load_session(filename)
重新加载会话。
我收到以下错误:
~/.local/lib/python3.6/site-packages/dill/_dill.py in load_session(filename, main) 408 unpickler._main = main 409 unpickler._session = True --> 410 module = unpickler.load() 411 unpickler._session = False 412 main.__dict__.update(module.__dict__) EOFError: Ran out of input
文件(即文件名)的数据大小约为30 gigs。
如何从文件中检索数据?
顺便说一句,我正在Google Cloud上运行所有这些程序,并且要花大量的时间才能保持实例的正常运行。
我尝试使用undill
和其他unpickle
方法。
例如,我尝试过:
open(file, 'a').close()
try:
with open(file, "rb") as Score_file:
unpickler = pickle.Unpickler(Score_file)
scores = unpickler.load()
return scores
但是出现此错误:
`6 with open(file, "rb") as Score_file: 7 unpickler = pickle.Unpickler(Score_file); ----> 8 scores = unpickler.load(); 9 10 return scores ModuleNotFoundError: No module named '__builtin__'`
答案 0 :(得分:0)
我知道这可能不是您想听到的答案,但是...听起来您的泡菜文件已损坏。在这种情况下,只有手动编辑数据,您才能取回数据,并且可以了解腌制的字符串是什么以及它们的结构。请注意,在某些极少数情况下,对象会dump
,但不会load
-但是,您的文件损坏的可能性更大。无论哪种方式,分辨率都是相同的...手动编辑是可能保存您腌制的内容的唯一方法。
此外,请注意,如果您使用dump_session
,则实际上应该使用load_session
(因为它是在标准load
之上执行的一系列步骤,与{ {1}}),与问题无关紧要,但是问题可能是泡菜文件不完整或损坏。