代码功能:将指定路径下的所有文件和文件夹压缩为.zip格式。


代码如下:

import os  # 导入负责处理操作系统相关事务的OS模块
import zipfile  # 导入与zip压缩文件操作相关的zipfile模块

tar_folder = "D:\\666"  # 指定压缩路径
output_file = "D:\\压缩.zip"  # 指定输出的压缩文件名和路径

if not os.path.exists(tar_folder):  # 指定压缩路径不存在的情况下
    print("指定压缩路径不存在,请重新指定路径!")  # 打印提示信息
else:  # 指定压缩路径存在的情况下
    for path, folders, files in os.walk(tar_folder):  # 遍历指定压缩路径,获得其目录结构
        if len(os.listdir(tar_folder)) == 0:  # 指定压缩路径内容为空的情况下
            print("目标压缩路径为空,请检查一下!")  # 打印提示信息
        else:  # 指定压缩路径内容非空的情况下
            zip_file = zipfile.ZipFile(output_file, "w", zipfile.ZIP_DEFLATED)  # 创建一个.zip文件
            new_path = path.replace(tar_folder, '')  # 将指定压缩路径替换为空,以得到其内部文件和文件夹的相对路径
            for filename in files:  # 遍历某一层级文件夹内所有文件
                zip_file.write(os.path.join(path, filename), os.path.join(new_path, filename))  # 向压缩文件内添加文件
            for folder in folders:  # 遍历某一层级文件夹内所有子文件夹
                if len(os.listdir(os.path.join(path, folder))) == 0:  # 子文件夹为空的情况下
                    zip_file.write(os.path.join(path, folder), os.path.join(new_path, folder))  # 向压缩文件内添加空文件夹
            zip_file.close()  # 对目标.zip文件操作完毕,关闭操作对象


"""
# 代码功能:将指定路径下的所有文件和文件夹压缩为.zip格式
# 注:
    1. 运行到第14行代码就会在目标路径创建一个.zip文件,只不过为空。内容是用.write()方法添加进去的。
    2. 第14行代码参数w代表写入,而且是以覆盖的形式写入。这个参数有三个选项,r、w、a,r代表读取,w代表覆盖式写入,
       a代表追加式写入。如果将此参数设为w,则输出的压缩文件存在同名文件的情况下会被覆盖。如果将此参数设为a,则
       输出的压缩文件存在同名文件的情况下,会在原文件的情况下追加写入。
    3. 第16、17行代码的作用是将文件和非空文件夹添加进压缩文件,第18、19、20行代码的作用是将空文件夹添加进压缩文件。
# 操作系统环境:Win10 1909
# Python环境:Python3.8.6
"""

以上就是本期的所有内容了,谢谢观看。


本套教程使用的Python编辑器均为Pycharm。
资料包中附带 Python3.8.6 及本期涉及的其他标准库虚拟环境, 可用之运行本期代码。


注:资料包包括本期内容文档、代码、Python3.8.6帮助文档。