当前位置: 首页 > 面试题库 >

如何在python中解压缩非常大的文件?

阚元白
2023-03-14
问题内容

使用python 2.4和内置ZipFile库,我无法读取非常大的zip文件(大于1或2
GB),因为它想将未压缩文件的全部内容存储在内存中。还有另一种方法(使用第三方库或其他黑客工具),还是必须“脱壳”并以这种方式解压缩(显然,它不是跨平台的)。


问题答案:

这是对大文件进行解压缩的概述。

import zipfile
import zlib
import os

src = open( doc, "rb" )
zf = zipfile.ZipFile( src )
for m in  zf.infolist():

    # Examine the header
    print m.filename, m.header_offset, m.compress_size, repr(m.extra), repr(m.comment)
    src.seek( m.header_offset )
    src.read( 30 ) # Good to use struct to unpack this.
    nm= src.read( len(m.filename) )
    if len(m.extra) > 0: ex= src.read( len(m.extra) )
    if len(m.comment) > 0: cm= src.read( len(m.comment) )

    # Build a decompression object
    decomp= zlib.decompressobj(-15)

    # This can be done with a loop reading blocks
    out= open( m.filename, "wb" )
    result= decomp.decompress( src.read( m.compress_size ) )
    out.write( result )
    result = decomp.flush()
    out.write( result )
    # end of the loop
    out.close()

zf.close()
src.close()


 类似资料:
  • 问题内容: 任何人都可以向我展示在我一直在搜索的Java中压缩和解压缩tar.gzip文件的正确方法,但是我能找到的最多是zip或gzip(单独)。 问题答案: 我最喜欢的是plexus-archiver-请参阅GitHub上的资源。 另一个选项是Apache commons- compress- (请参阅mvnrepository)。 使用plexus-utils,用于取消存档的代码如下所示:

  • 常用压缩包—解压—令整理 Linux 后缀为 .war 格式的文件(一般用在部署 Tomcat 项目的时候) 命令:unzip -oq XXXXXX.war -d ROOT 如果没有 ROOT 目录会自动创建 ROOT 目录。 Linux 后缀为 .tar.gz 格式的文件-解压 命令:tar zxvf XXXXXX.tar.gz Linux 后缀为 .bz2 格式的文件-解压 命令:bzip2

  • 我正试图用Java编写一个程序来解压大型机中PKZIP工具压缩的文件。然而,我试过以下三种方法,它们都不能解决我的问题。 > by exe. 我试图通过WinRAR、7Zip和Linux命令(解压)打开它。全部失败,错误信息如下: 档案不是格式未知就是损坏了 通过jdkapi-java。util。拉链 正如这个网站所描述的,我还尝试用JDKAPI解压它。但是,它失败并显示错误消息: IO错误:ja

  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • 问题内容: 如果文件是A ,我可以解压缩文件,如果文件类型是I,则可以解压缩文件。我如何使用python 2.7进行此工作? 问题答案: 试试这个包:

  • 问题内容: 我很难弄清楚如何使用2.4解压缩zip文件。不包含在2.4中。我只能在服务器上使用2.4.4。 有人可以提供一个简单的代码示例吗? 问题答案: 您必须使用和。考虑目录的样本