在开发过程中,我们常常需要将目录中的文件夹分别压缩为独立的ZIP文件,以便进行打包、备份或传输。本文将介绍如何使用Python实现这一功能,并提供完整的代码示例。
准备工作
首先,我们需要导入两个Python标准库模块:os和zipfile。os模块用于处理目录和文件操作,zipfile模块用于创建和管理ZIP文件。
import os
import zipfile
定义辅助函数
为了将文件夹及其内容压缩为ZIP文件,我们定义了一个辅助函数zip_folder。该函数接收文件夹路径和ZIP文件路径作为参数,并使用os.walk递归遍历文件夹中的所有文件,将它们添加到ZIP文件中。
def zip_folder(folder_path, zip_file_path):
with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
relative_path = os.path.relpath(file_path, folder_path)
zipf.write(file_path, relative_path)
定义主函数
接下来,我们定义主函数zip_each_folder,该函数接收目标目录路径作为参数。函数内部使用os.listdir列出目标目录中的所有项目,并使用os.path.isdir判断是否为文件夹。如果是文件夹,则调用zip_folder函数将其压缩为ZIP文件。
def zip_each_folder(target_dir):
for item in os.listdir(target_dir):
folder_path = os.path.join(target_dir, item)
if os.path.isdir(folder_path):
zip_file_name = item + '.zip'
zip_file_path = os.path.join(target_dir, zip_file_name)
zip_folder(folder_path, zip_file_path)
print(f"{item} 已压缩为 {zip_file_name}")
调用主函数
最后,我们调用zip_each_folder函数,将当前目录中的每个文件夹分别压缩为ZIP文件。
target_directory = './'
zip_each_folder(target_directory)
完整代码如下:
import os
import zipfile
def zip_folder(folder_path, zip_file_path):
with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
relative_path = os.path.relpath(file_path, folder_path)
zipf.write(file_path, relative_path)
def zip_each_folder(target_dir):
for item in os.listdir(target_dir):
folder_path = os.path.join(target_dir, item)
if os.path.isdir(folder_path):
zip_file_name = item + '.zip'
zip_file_path = os.path.join(target_dir, zip_file_name)
zip_folder(folder_path, zip_file_path)
print(f"{item} 已压缩为 {zip_file_name}")
target_directory = './'
zip_each_folder(target_directory)
代码详解
1、导入模块:首先导入os和zipfile模块。
2、定义zip_folder函数:该函数遍历文件夹及其子文件夹中的所有文件,并将它们写入指定的ZIP文件中。
3、定义zip_each_folder函数:该函数遍历目标目录中的所有项目,判断是否为文件夹,并调用zip_folder函数将其压缩为ZIP文件。
4、调用zip_each_folder函数:指定目标目录并调用主函数,执行压缩操作。
总结
通过以上步骤,我们可以使用Python轻松地将目录下的每个文件夹分别压缩为独立的ZIP文件。这种方法适用于需要批量打包文件夹的场景,极大地提高了工作效率。希望本文对您有所帮助,如果您有任何问题或建议,欢迎在评论区留言。