python-3.x - 使用 dill 或 pickle 后无法检索数据
问题描述
我使用 转储了一个 Jupyter Notebook 会话dill.dump_session(filename)
,有一次它告诉我磁盘存储已满。但是,我在磁盘上腾出一些空间并再次尝试。现在,我无法使用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__'`
解决方案
我知道这可能不是您想听到的答案,但是……听起来您的泡菜文件可能已损坏。如果是这种情况,只有手动编辑才能取回数据,并且可以了解腌制字符串是什么以及它们的结构。请注意,在一些非常罕见的情况下,对象会dump
,但不会load
- 但是,您的文件很可能已损坏。无论哪种方式,分辨率都是相同的......手动编辑是可能保存您腌制的内容的唯一方法。
另外,请注意,如果您使用dump_session
,您真的应该使用load_session
(因为它在标准之上执行一系列步骤load
,颠倒在 中所做的事情dump_session
)——这与问题无关,但是,问题可能是不完整或损坏的泡菜文件。
推荐阅读
- maven - 在本地 Maven-Metadata.xml 中找不到元数据
- python - 在 Pandas 中使用重新索引而不更改其他列数据
- ruby-on-rails - Linkedin omniauth 有时在 ruby on rails 5 上工作而不是其他人
- reactjs - TypeScript linting 错误:组件上不存在 ref
- asp.net-mvc - 如何重定向所有与控制器无关的 url (Asp.Net MVC)
- python - 为什么“s”不返回任何东西?
- python - 通过在 Python 中覆盖 HTMLCalendar 函数的“无效语法”
- c++ - 显式(布尔)可以作用于字符文字参数的长度吗?
- microsoft-teams - 如何在 Spfx 反应解决方案中获取团队上下文
- sql - SQL:如何按日期连续分组?