当前位置:编程学习 > python >>

用Python使用zipfile库压缩解压文件打包zip

用Python将文件进行压缩,可以使用 zipfile库,提供了非常丰富的API。

用Python打包压缩文件

import os
import zipfile
def file2zip(zip_file_name: str, file_names: list):
    """ 将多个文件夹中文件压缩存储为zip
    
    :param zip_file_name:   /root/zzzyk.com.zip
    :param file_names:      ['/root/zzzyk.com.txt', ...]
    :return: 
    """
    # 读取写入方式 ZipFile requires mode 'r', 'w', 'x', or 'a'
    # 压缩方式  ZIP_STORED: 存储; ZIP_DEFLATED: 压缩存储
    with zipfile.ZipFile(zip_file_name, mode='w', compression=zipfile.ZIP_DEFLATED) as zf:
        for fn in file_names:
            parent_path, name = os.path.split(fn)
            
            # zipfile 内置提供的将文件压缩存储在.zip文件中, arcname即zip文件中存入文件的名称
            # 给予的归档名为 arcname (默认情况下将与 filename 一致,但是不带驱动器盘符并会移除开头的路径分隔符)
            zf.write(fn, arcname=name)
            
            # 等价于以下两行代码
            # 切换目录, 直接将文件写入。不切换目录,则会在压缩文件中创建文件的整个路径
            # os.chdir(parent_path)
            # zf.write(name)


if __name__ == "__main__":
zip_name = '/root/zzzyk.com.zip'
files = ['/root/user/doc/test.txt', '/root/user/doc/test1.txt']
file2zip(zip_name , files)

用Python解压压缩包

def zip2file(zip_file_name: str, extract_path: str, members=None, pwd=None):
    """ 压缩文件内容提取值指定的文件夹

    :param zip_file_name: 待解压的文件  .zip          r'D:\Desktop\tst.zip'
    :param extract_path:  提取文件保存的目录           r'D:\Desktop\tst\test\test'
    :param members:       指定提取的文件,默认全部
    :param pwd:           解压文件的密码
    :return:
    """
    with zipfile.ZipFile(zip_file_name) as zf:
        zf.extractall(extract_path, members=members, pwd=pwd)

if __name__ == "__main__":
zip_name = '/root/zzzyk.com.zip'
zip2file(zip_name , "/home/zzzyk.com")
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,