如何修改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
相关产品推荐
相关产品推荐

