【问题标题】:OSError: Failed to interpret my file as a pickle (numpy)OSError:无法将我的文件解释为泡菜(numpy)
【发布时间】:2018-12-04 16:57:02
【问题描述】:

我正在尝试加载一个文件,它以前可以工作,但现在我只收到错误:

OSError: 无法将文件“name.npz”解释为泡菜

我使用的代码如下

data = np.load("name.npz")

我看不到自从我上次运行代码后发生了什么变化并且它工作了,我什至回到了原始代码(当我确定它可以加载它时我拥有的)但它仍然给出了相同的结果错误信息。

【问题讨论】:

  • 我会尝试使用操作系统存档工具查看name.npz。给定名称,它应该是zip 存档。但是load 会检查初始的archive 字节字符串,如果失败则尝试以常规方式打开它,或者(显然)作为pickle。文件可能已损坏。
  • @hpaulj 但是我之前可以使用完全相同的代码打开文件而没有问题,这不是很奇怪吗?
  • 你说的文件肯定有问题,我重新下载了,现在可以正常使用了

标签: python numpy compiler-errors


【解决方案1】:

您可以先将其作为原始泡菜打开,然后转换为 numpy 数组,如下所示:

import pickle as pl
import numpy as np
myfile = "name.npz"
with open(myfile, 'rb') as handle:
     my_array = pl.load(handle)
data = np.array(my_array)

【讨论】:

  • 然后我收到此错误消息:my_array = pl.load(handle) _pickle.UnpicklingError: A load persistent id 指令被遇到,但没有指定 persistent_load 函数。
  • 嗯,我从来没有遇到过这个错误信息。他们正在以下线程中讨论它stackoverflow.com/questions/25151206/…
  • 似乎这取决于文件之前的腌制方式
猜你喜欢
  • 1970-01-01
  • 2021-05-31
  • 2012-02-22
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多