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

如何在所有操作系统上用Python解压缩文件?

曹超
2023-03-14
问题内容

是否有一个简单的Python函数可以像这样解压缩.zip文件?

unzip(ZipSource, DestinationDirectory)

我需要在Windows,Mac和Linux上执行相同操作的解决方案:如果zip是文件,则始终生成文件;如果zip是目录,则始终生成目录;如果zip是多个文件,则始终生成目录。始终位于给定的目标目录内,而不是

如何在Python中解压缩文件?


问题答案:

使用zipfile标准库中的模块:

import zipfile,os.path
def unzip(source_filename, dest_dir):
    with zipfile.ZipFile(source_filename) as zf:
        for member in zf.infolist():
            # Path traversal defense copied from
            # http://hg.python.org/cpython/file/tip/Lib/http/server.py#l789
            words = member.filename.split('/')
            path = dest_dir
            for word in words[:-1]:
                while True:
                    drive, word = os.path.splitdrive(word)
                    head, word = os.path.split(word)
                    if not drive:
                        break
                if word in (os.curdir, os.pardir, ''):
                    continue
                path = os.path.join(path, word)
            zf.extract(member, path)

请注意,使用的时间extractall会短很多,但是该方法
无法 防止Python
2.7.4之前的路径遍历漏洞。如果可以保证您的代码在最新版本的Python上运行。



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

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

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

  • 问题内容: 如果我理解正确,则需要添加一些东西以启用mod_rewrite。如果是这样,我需要输入什么或?请特定于操作系统。 问题答案: 不,这是一个Apache模块,与PHP无关。 要激活该模块,需要激活以下行: 要查看它是否已经处于活动状态,请尝试将文件放入包含以下内容的Web目录中 如果在不引发500个内部服务器错误的情况下工作,并且文件被解析,则URL重写有效。

  • 本文向大家介绍PHP 实现文件压缩解压操作的方法,包括了PHP 实现文件压缩解压操作的方法的使用技巧和注意事项,需要的朋友参考一下 在php中,有时我们需要使用到压缩文件操作,压缩文件可以节省磁盘空间;且压缩文件更小,便于网络传输,效率高,下面我们就来了解php的压缩解压相关操作 在PHP中有一个ZipArchive类,专门用于文件的压缩解压相关操作 在ZipArchive类中主要使用到了如下方法

  • 本文向大家介绍详解Python 解压缩文件,包括了详解Python 解压缩文件的使用技巧和注意事项,需要的朋友参考一下 zipfile模块及相关方法介绍: 1 压缩 1.1 创建zipfile对象 zipfile.ZipFile(file, mode='r', compression=0, allowZip64=True, compresslevel=None) 创建Zipfile对象,主要参数: