zipfile打包

环境:Python3.7.3
IDE:Pycharm
操作系统:Win10

将某一文件夹内的所有文件夹进行打包,其下的所有文件依照原有的存储路径一同打包到zip包内。

zipfle核心代码:

创建zip:

zip = zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED)#zipfile的核心逻辑,创建zip

zip写入数据:

zip.write(filePath,zipPath )#zip中写入文件, filePath为文件本身路径,zipPath为在zip中的路径(zip根目录为空)。

示例

import os, zipfile

def main(input):
    dir_list = os.listdir(input)

    for dir in dir_list:
        p_dir = os.path.join(input, dir)
        if not os.path.isdir(p_dir):#不是文件夹直接跳过
            print("不是文件夹,跳过了:",p_dir)
            continue

        zip_name = os.path.join(input, dir + ".zip")#创建zip文件

        zip = zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED)#zipfile的核心逻辑,创建zip
        do_zip(zip, p_dir)
        zip.close()


def do_zip(zip, p_dir):
    for root, dirs, filenames in os.walk(p_dir):
        fpath = root.replace(p_dir, "")#存储逻辑不变

        for filename in filenames:
            zip.write(os.path.join(root, filename), os.path.join(fpath, filename))#zip中写入文件,并保留原有存储逻辑

if __name__ == '__main__':
    inputpath = r"D:\ccc\data\ddd"
    main(inputpath)

以上。

你可能感兴趣的:(zipfile打包)