Python解压缩文件方法

工作中经常遇到需要解压各种压缩包的接口需求,包括.tar、.tar.gz、.zip、.rar包,为了避免每次都得重新谷歌,试错调错,我将各种解压的python代码整理出来,下次可以直接拿过来用,建议小伙伴们收藏。

import tarfile
import zipfile
import rarfile


def uncompress(src_file, dest_dir):
    """解压各种类型的压缩包

    :param src_file: 你要解压的压缩包文件
    :type src_file: file
    :param dest_dir: 你要解压到的目标路径
    :type dest_dir: str
    """

    file_name, file_type = os.path.splitext(src_file.filename)

    try:
        if file_type == '.zip':
            # 需要安装zip包:pip install zipp
            zip_file = zipfile.ZipFile(src_file)
            for names in zip_file.namelist():
                zip_file.extract(names, dest_dir)
            zip_file.close()

        elif file_type == '.rar':
            # 需要安装rar包:pip install rarfile
            rar = rarfile.RarFile(src_file)
            os.chdir(dest_dir)
            rar.extractall()
            rar.close()

        else:
            # file_type == '.tgz' or file_type == '.tar' or file_type == '.gz'
            # Python自带tarfile模块
            tar = tarfile.open(fileobj=src_file)
            for name in tar.getnames():
                tar.extract(name, dest_dir)
            tar.close()

    except Exception as ex:
        return False
    return True

调用示例:

if __name__ == '__main__':

    dest_dir = '你要解压到的目标路径'

    with open('你要解压的压缩包文件路径', 'rb') as src_file:
        result = uncompress(src_file, dest_dir)

注意:liunx解压rar包,需要安装unrar:

$ sudo apt-get install unrar

发表评论