吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1565|回复: 16
收起左侧

[Python 原创] 批量压缩同名文件

[复制链接]
a2599639 发表于 2024-1-4 12:07
本帖最后由 a2599639 于 2024-1-4 12:10 编辑

在工作中可能会遇到下面的场景:需要将很多同名的文件压缩到一个压缩包里面,几千个文件手动肯定不现实,
企业微信截图_17043407948413.png 企业微信截图_17043409184898.png
那就用代码实现把
[Python] 纯文本查看 复制代码
import os
from zipfile import ZipFile

def zip_files_with_same_name(folder_path, output_folder):
   
    os.makedirs(output_folder, exist_ok=True)

    # 遍历文件夹及其子文件夹
    for root, _, files in os.walk(folder_path):
        # 创建一个字典,以文件名(不包含后缀)为键,文件路径列表为值
        file_dict = {}
        for file in files:
            file_name, file_ext = os.path.splitext(file)
            file_key = file_name.lower()  # 忽略文件名的大小写
            file_path = os.path.join(root, file)
            if file_key in file_dict:
                file_dict[file_key].append(file_path)
            else:
                file_dict[file_key] = [file_path]

        # 遍历字典,对每组同名文件进行压缩
        for key, file_paths in file_dict.items():
            if len(file_paths) > 1:
               
                rel_path = os.path.relpath(file_paths[0], folder_path)

                output_subfolder = os.path.join(output_folder, os.path.dirname(rel_path))

                
                os.makedirs(output_subfolder, exist_ok=True)

                
                zip_file_path = os.path.join(output_subfolder, f"{key}.zip")

                with ZipFile(zip_file_path, 'w') as zipf:
                    for file_path in file_paths:
                        
                        rel_file_path = os.path.relpath(file_path, folder_path)
                        zipf.write(file_path, rel_file_path)

if __name__ == "__main__":
 
    current_folder = os.getcwd()

  
    output_folder = os.path.join(current_folder, "output")

    # 执行压缩
    zip_files_with_same_name(current_folder, output_folder)

这个代码可以将目录下所有文件夹下的同名文件压缩在一起,并保留文件路径

还有两个分别是只压缩当前文件夹下的文件、压缩所有文件夹下的文件,不保留文件路径
批量压缩同名文件.7z (1.06 KB, 下载次数: 45)

免费评分

参与人数 2吾爱币 +7 热心值 +2 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
hnnx123 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| a2599639 发表于 2024-1-4 14:28
petroyf 发表于 2024-1-4 14:19
没明白这个实际应用场景,同一文件夹下的同前缀名或后缀名文件?

把同名的文件压在一起,不管后缀是什么

不只是同一文件夹,也可以压子文件夹下的,而且可以选择保留文件路径和去掉文件路径
LuckyClover 发表于 2024-1-4 13:32
laustar 发表于 2024-1-4 13:44
petroyf 发表于 2024-1-4 14:19
没明白这个实际应用场景,同一文件夹下的同前缀名或后缀名文件?
nongren 发表于 2024-1-4 14:26
实用性不错
青春莫相随 发表于 2024-1-4 15:00
感谢分享,有些情况下的确需要
flylujun 发表于 2024-1-4 15:10
感谢分享,支持一下
jiushiyaole 发表于 2024-1-4 15:50
感觉很实用,下载收藏
a5870150 发表于 2024-1-4 16:41
这了慢一个好办法, 就是有点担心。如果能自动把前几个字相同的文件分类压缩就好了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表