我正在 Kaggle 上进行 CIFAR 挑战。
他们提供了一个 .7z 文件,其中包含 50k 张图片作为训练。我花了 1 个小时解压缩它,然后又花了 40 分钟来读取所有文件并将其放入内存中。
尝试不创建 50k 文件,因为这是瓶颈,我已经安装了 pylzma 和其他库,但它们都会告诉我文件无效。
来自 bash 的 7z,可以正确读取文件,并列出文件。所以我使用Popen
bash 7z 程序解压缩所有文件并将其放入内存中的字符串中
import subprocess
p = subprocess.Popen(["7z", "e", "-so", "awa.7z"], stdout=subprocess.PIPE).communicate()[0]
我设法通过查看每个文件的大小然后从字符串中获取适当的字节来单独获取每个文件
f1 = p[0][0:2105]
我现在想要的是欺骗 Python 认为 F1 文件指针,以便我可以调用 skimage.io.imread 并将其转换为适当的结构。或者也许只是将内存值传递给 skimage ,它会为我转换它。