【问题标题】:How to extract a very big file in Google Colab如何在 Google Colab 中提取一个非常大的文件
【发布时间】:2020-06-27 17:35:13
【问题描述】:

我正在尝试提取 14.6 GB 7z 文件 (https://archive.org/download/stackexchange/stackoverflow.com-Posts.7z)。

我已将其下载并保存在我的 Google 云端硬盘中。我将驱动器挂载到 Google Colab,然后将当前目录更改为文件所在的位置:os.chdir('/content/drive/My Drive/.../')

当我尝试解压缩文件!p7zip -k -d stackoverflow.com-Posts.7z 时,它使用了当前实例的硬盘空间,在此过程中,它耗尽了所有可用的已分配硬盘空间,因此解压缩突然终止。

有没有一种方法可以在不使用实例的硬盘空间的情况下提取文件,或者以块的形式提取文件,这样提取就成功了。

PS:我相信,解压后的文件大小约为 100 GB

【问题讨论】:

    标签: google-drive-api google-colaboratory


    【解决方案1】:

    您可以尝试使用 libarchive 按块读取数据,而无需先解压缩。

    https://github.com/dsoprea/PyEasyArchive

    这是example notebook

    【讨论】:

    • 嗯,您能提供更多信息吗? 7z 中只有一个压缩文件,我确实希望将其解压缩。它是一个 XML,我希望稍后使用 python 处理它......当然不会遇到空间不足的错误。
    • 感谢您的更新。我有个疑问;我一直在阅读这些 XML,例如 tree = ET.parse('data/english.stackexchange.com/Users.xml')root = tree.getroot(),然后在根目录 (for child in root: user = child.attrib) 中迭代孩子。你知道我是否可以做类似的事情吗?从您编写的代码来看,我似乎可以分块阅读它......但我希望提取整个内容并将其作为 XML 本身阅读。
    • 你需要从7z改成gz。然后你可以这样做。您可以按块读取 7z,然后压缩到新的 gz。 gz创建完成后,gzip.open,发送到iterparse。
    猜你喜欢
    • 2019-06-20
    • 2018-10-23
    • 2018-11-08
    • 2021-01-22
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    相关资源
    最近更新 更多