【发布时间】:2016-05-02 13:08:54
【问题描述】:
我有一个 zipfile,其中包含许多 npy 文件(file1.npy、file2.npy、file3.npy、...)。我想单独加载它们而不在文件系统上提取 zipfile。我尝试了很多东西,但我无法弄清楚。
我的猜测是:
import zipfile
import numpy as np
a = {}
with zipfile.ZipFile('myfiles.zip') as zipper:
for p in zipper.namelist():
with zipper.read(p) as f:
a[p] = np.load(f)
有什么想法吗?
【问题讨论】:
-
你的错误是什么?为什么它不起作用
-
您可以使用savez_compressed 将它们全部保存到一个
*.npz中,而不是使用多个*.npy的zip,这样您就不需要手动解压缩它。 -
@kennytm 我无权访问文件的保存方式
-
我想知道将文件重命名为
*.npz是否会欺骗np.load将其视为savez生成的存档。或者直接使用np.lib.npyio.NpzFile。 -
@hpaulj 我不明白你的疑惑是我有一个 zipfile 已经包含许多 npy 文件......那么我该如何尝试你的想法?你能写一个完整的答案吗?