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