如何用 python 解压 gz 文件(三层嵌套文件夹)?

我有一个图片数据集,为了减少 io 在训练过程中的耗时,我把它压缩成了 gz 文件,然后上传到 kaggle 上训练,文件结构如下图所示:

image.png

我想的是在训练的时候解压出来放在内存中(数据集 300MB 左右,kaggle 提供的 P100 的内存约为 16GB)我搜了很久也没找到怎样如何实现,一部分是直接用 gzip.GzipFile(...) 处理,但是我需要对这里的图片进行一些传统图像预处理方式,然后才转换成 tensor 扔到网络里去训练。有人知道如何做吗?或者能提供一些帮助吗?

补充

  1. 如果 gz 文件的库支持不行的话,我也可以压缩成 zip 等格式重新上传。
  2. 我试了下 zip,可以简单实现嵌套的解压,但它给放到磁盘上了,没放到内存中。
import zipfile
def unzip(filename):
    zfile = zipfile.ZipFile(filename)
    # print(zfile.namelist())
    images = zfile.extractall(path='data')

image.png

谢谢:)

阅读 2.5k
1 个回答

也许可以换种思路, 保存到磁盘上, 自己读到内存. 或者解压到 /tmp 这个内存文件系统上.

纯粹的gz应该是压缩用的吧. 还应该有归档tar格式.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题