Python碎片化学习教程 @9. 将指定路径下的所有文件和文件夹压缩为.zip格式

代码功能:将指定路径下的所有文件和文件夹压缩为.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帮助文档。


本期资料包下载:
  百度网盘:链接:https://pan.baidu.com/s/12Z_fUfUKRW41a17DjTo-8A
      提取码:od7l

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚者黑科技工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值