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)

以上。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容