Python打包与解压zip

打包

shutil模块

shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]])
  • 参数说明:

    • base_name:创建的目标文件名,包括路径,减去任何特定格式的扩展
    • format:压缩格式,zip,tar,bztar或gztar中的一个
    • root_dir:打包时切换到的根路径。也就是说,开始打包时,会先执行路径切换,切换到root_dir所指定的路径,默认为当前路径。
    • base_dir:开始打包的路径。也就是说,该命令会对base_dir所指定的路径进行打包,默认值为root_dir,即打包切换后的当前目录。亦可指定某一特定子目录,从而实现打包的文件包含此统一的前缀路径
    • ownergroup为创建tar包时使用,默认为用户当前的owner和```group``
  • 使用示例

import os
import datetime
import shutil

base_name = os.path.dirname(os.path.realpath(__file__))
tmp_folder_name = "tmp-%s"%datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
db_folder = os.path.join(base_name, "..", "data", tmp_folder_name)
if not os.path.exists(db_folder):
    os.makedirs(db_folder)
    

zip_file_name = "project_%s_%s"%(projectid,  datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S"))
shutil.make_archive(os.path.join(base_name, "..", "data", zip_file_name), 'zip', db_folder)

将db_folder的文件夹压缩成data下的以zip_file_name命名的压缩包。
压缩包

解压

Zipfile

ZipFile是主要的类,用来创建和读取zip文件
zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])

创建一个ZipFile对象,表示一个Zip文件。

  • 参数说明
    • file:文件路径或类文件对象
    • mode:打开zip文件的模式,默认为‘r’.
      表示读已经存在的zip文件,也可以用‘w’或者‘a’,‘w’表示新建一个zip文档或者覆盖一个已经存在的zip文档,‘a’表示将数据附加到一个现存的zip文档中。
    • compression表示写zip文档时使用的压缩方法,值可以是zipfile.ZIP_STORED或zipfile.ZIP_DEFLATED。
    • allowZIP64:如果文档大小超过2G,应该将allowZIP64设为TRUE。

ZipFile.namelist()

获取Zip文档内所有文件的名称列表。

ZipFile.extract

ZipFile.extract(member[, path[, pwd]])

将zip文档内的指定文件解压到当前目录。

  • 参数说明
    • member:要解压的文件名或者ZipInfo对象
    • path: 解析文件保存的文件夹
    • pwd:解压密码
  • 使用示例
def un_zip(file_name,upload_path):
    """unzip zip file"""
    zip_file = zipfile.ZipFile(os.path.join(upload_path,file_name))
    file_name_pre=file_name.split('.')[0]
    restore_path=os.path.join(upload_path,file_name_pre)

    if not os.path.exists(restore_path):
        os.makedirs(restore_path)
    for names in zip_file.namelist():
        zip_file.extract(names,restore_path)
    zip_file.close()
    return restore_path
  

解压

引用

猜你喜欢

转载自blog.csdn.net/qq_24495287/article/details/84799512