以下是一个 Python 脚本,它可以遍历指定根目录下的所有子目录,并将每一个子目录压缩为 ZIP 文件。非目录的文件会被直接跳过。
# -*- coding: utf-8 -*-
import os
import zipfile
def zip_directory(directory_path, output_path):
"""压缩指定目录为 ZIP 文件"""
with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, _, files in os.walk(directory_path):
for file in files:
file_path = os.path.join(root, file)
zipf.write(file_path, os.path.relpath(file_path, directory_path))
def process_directories(root_dir):
for item in os.listdir(root_dir):
item_path = os.path.join(root_dir, item)
if os.path.isdir(item_path) :
# 压缩子目录
zip_output_path = os.path.join(root_dir, f"{item}.zip")
print(f"Compressing {item_path} to {zip_output_path}")
zip_directory(item_path, zip_output_path)
else:
print(f"Skipping {item_path}")
if __name__ == '__main__':
# 替换为你的根目录路径
root_directory = '/path/to/your/root_directory'
process_directories(root_directory)
说明:
-
zip_directory(directory_path, output_path)
:这个函数将指定的目录压缩为 ZIP 文件。
-
directory_path
:要压缩的目录路径。 -
output_path
:生成的 ZIP 文件的路径。
-
process_directories(root_dir)
:这个函数遍历指定根目录下的所有子目录,并调用zip_directory
函数进行压缩。
-
root_dir
:根目录路径。
os.path.isdir(item_path)
:检查路径是否为目录。os.path.relpath(file_path, directory_path)
:在 ZIP 文件中保持目录结构。
使用步骤:
- 将脚本中的 '/path/to/your/root_directory' 替换为你的根目录路径。
- 运行脚本:
python script_name.py
注意事项:
- 确保在运行脚本之前备份重要数据,以防止意外情况。
- 脚本会在根目录中生成以子目录名称命名的 ZIP 文件。