You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python脚本实现子目录内文件夹单独7zip压缩?

修改Python脚本实现子目录内文件夹单独压缩

原脚本的问题在于,它把每个子目录下的所有内容(通过*通配符)打包成了一个zip文件。要实现每个子目录中的文件夹分别单独压缩,需要在外层遍历子目录的基础上,再增加一层遍历,针对每个子目录里的单个文件夹执行压缩命令。

以下是修改后的脚本:

import os
import subprocess

path_to_dir = "C:/folder1/"

# 遍历path_to_dir下的所有子目录
for subdir_name in os.listdir(path_to_dir):
    subdir_path = os.path.join(path_to_dir, subdir_name)
    if not os.path.isdir(subdir_path):
        continue  # 跳过非目录项
    
    # 遍历当前子目录下的所有文件夹
    for folder_name in os.listdir(subdir_path):
        folder_path = os.path.join(subdir_path, folder_name)
        if not os.path.isdir(folder_path):
            continue  # 跳过非文件夹项
        
        # 生成对应文件夹的zip文件名,保存到子目录下
        zip_filename = f"{folder_name}.zip"
        zip_output_path = os.path.join(subdir_path, zip_filename)
        
        # 构造7z命令:只压缩当前单个文件夹,排除txt文件
        command = f'7z a -tzip -mx0 "{zip_output_path}" "{folder_path}" -x!*.txt'
        subprocess.run(command, shell=True)

input("Press Enter to exit...")

关键改动说明:

  • 增加内层循环:遍历每个子目录下的具体文件夹,只对文件夹执行压缩操作
  • 调整7z命令的目标路径:从原来的subdirectory/*改为单个folder_path,确保只压缩目标文件夹
  • 保留原有的-x!*.txt参数,继续排除txt文件
  • zip文件名改为对应文件夹的名称,避免不同文件夹的压缩包混淆

这样修改后,当path_to_dir设为C:/folder1/时,脚本会进入C:/folder1/subdir1/,把其中的folderA压缩成folderA.zip,folderB压缩成folderB.zip,以此类推。

内容的提问来源于stack exchange,提问作者bin9980

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:27:15