Python批量压缩和解压文件的操作指南

作者:

文章目录
  • 处理大文件传输最直接的方法就是文件压缩。Python能帮你把整个文件夹甚至指定文件,快速打包成一个体积更小的.zip压缩包,让你的文件秒变小,传输更流畅! 功能: 批量压缩文件夹: 将整个项目目录及其所有子文件,一键打包成一个zip文件。 智能选择文件: 你甚至可以控制只压缩特定类型的文件。 解决思路: Python内置的zipfile库,就是你的最佳批量打包文件工具,无需安装第三方库,就能实现高效的Python文件压缩。 import os import zipfile def compress_folder_to_zip(source_folder_path, output_zip_path, include_file_types=None): “”” 批量压缩指定文件夹及其所有内容到一个zip文件。 这是高效的Python文件压缩方法,实现批量打包文件。 :param source_folder_path: 要压缩的源文件夹路径 :param output_zip_path: 输出zip文件的完整路径 (例如 “project_archive.zip”) :param include_file_types: 可选列表,只压缩指定扩展名的文件 (如 [‘.jpg’, ‘.pdf’]) “”” if not os.path.exists(source_folder_path): print(f”❌ 源文件夹不存在:{source_folder_path}”) return # 确保输出目录存在 os.makedirs(os.path.dirname(output_zip_path), exist_ok=True) print(f”🚀 正在压缩文件夹:'{source_folder_path}’ 到 ‘{output_zip_path}’…”) try: with zipfile.ZipFile(output_zip_path, ‘w’, zipfile.ZIP_DEFLATED) as zf: # os.walk() 遍历文件夹及其子文件夹和文件 for root, dirs, files in os.walk(source_folder_path): # 计算当前文件在zip文件中的相对路径 relative_path = os.path.relpath(root, source_folder_path) for file in files: file_path = os.path.join(root, file) # 检查文件类型是否在需要包含的列表中 if include_file_types and os.path.splitext(file.lower())[1] not in include_file_types: print(f” ℹ️ 跳过文件(类型不符):{file}”) continue # 将文件添加到zip文件,使用相对路径作为zip内部路径 zf.write(file_path, os.path.join(relative_path, file)) # 获取压缩前后文件大小,进行直观对比 original_size_bytes = sum(os.path.getsize(os.path.join(r, f)) for r, d, fs in os.walk(source_folder_path) for f in fs) compressed_size_bytes = os.path.getsize(output_zip_path) original_size_mb = original_size_bytes / (1024 * 1024) compressed_size_mb = compressed_size_bytes / (1024 * 1024) savings_percentage = ((original_size_bytes – compressed_size_bytes) / original_size_bytes) * 100 if original_size_bytes > 0 else 0 print(f”✅ 压缩成功!”) print(f” 原始总大小: {original_size_mb:.2f} MB”) print(f” 压缩后大小: {compressed_size_mb:.2f} MB”) print(f” 节省空间: {savings_percentage:.2f}%”) except Exception as e: print(f”❌ 压缩失败:{e}”) if __name__ == “__main__”: # — 请修改为你的实际文件夹路径 — source_folder_path = os.path.expanduser(“~/Desktop/我的项目资料”) output_zip_path = os.path.expanduser(“~/Desktop/项目资料_归档.zip”) # 确保源文件夹存在并有测试文件,可以创建一些子文件夹和文件 os.makedirs(source_folder_path, exist_ok=True) # 示例:创建一些测试文件用于压缩 with open(os.path.join(source_folder_path, “report.txt”), “w”) as f: f.write(“Hello Worldn” * 5000) with open(os.path.join(source_folder_path, “image.jpg”), “w”) as f: f.write(“binary data” * 100000) os.makedirs(os.path.join(source_folder_path, “subfolder”), exist_ok=True) with open(os.path.join(source_folder_path, “subfolder”, “data.csv”), “w”) as f: f.write(“1,2,3n” * 2000) # 示例1:压缩整个文件夹 print(“n— 示例1:批量压缩整个文件夹 —“) compress_folder_to_zip(source_folder_path, output_zip_path) # 示例2:只压缩特定类型的文件(如只压缩图片和PDF) # print(“n— 示例2:只压缩图片和PDF —“) # compress_folder_to_zip(source_folder_path, os.path.expanduser(“~/Desktop/图片文档.zip”), include_file_types=[‘.jpg’, ‘.png’, ‘.pdf’]) 操作步骤: 准备文件夹: 在桌面创建一个名为我的项目资料的文件夹,放入一些不同类型的文件和子文件夹,使其总大小稍大一些(比如几MB甚至几十MB),以体现压缩效果。 修改代码路径: 复制上方代码到VS Code,保存为compress_files.py。修改 source_folder_path 和 output_zip_path 为你实际的文件夹路径和想要保存的zip文件路径。 运行: 在VS Code终端运行 python compress_files.py。
  • 收到了同事发来的.zip压缩包?或者下载了一堆打包文件?Python能帮你一键解压,快速还原所有内容,让你的文件传输流程更加流畅! 主要功能: 批量解压缩: 快速将.zip包解压到指定位置,包括内部的文件夹结构。 处理多种压缩包: zipfile库主要处理.zip格式,但未来还可以扩展支持.rar、.7z等。 如何实现: zipfile库同样提供了简单的API,可以批量解压.zip文件到指定目录。 import os import zipfile def extract_zip_to_folder(zip_file_path, target_folder_path): “”” 解压缩zip文件到指定文件夹。 这是高效的Python文件解压工具。 :param zip_file_path: 要解压的zip文件完整路径 :param target_folder_path: 解压目标文件夹路径 “”” if not os.path.exists(zip_file_path): print(f”❌ Zip文件不存在:{zip_file_path}”) return os.makedirs(target_folder_path, exist_ok=True) # 确保目标文件夹存在 print(f”🚀 正在解压 ‘{zip_file_path}’ 到 ‘{target_folder_path}’…”) try: with zipfile.ZipFile(zip_file_path, ‘r’) as zf: zf.extractall(target_folder_path) # 解压所有内容 print(f”✅ 解压成功!所有文件已解压到:{target_folder_path}”) except Exception as e: print(f”❌ 解压失败:{e}”) if __name__ == “__main__”: # — 请修改为你的实际zip文件路径和目标解压路径 — # 假设你已经运行了2.1节的压缩代码,并生成了 ‘项目资料_归档.zip’ source_zip_file = os.path.expanduser(“~/Desktop/项目资料_归档.zip”) output_extracted_folder = os.path.expanduser(“~/Desktop/解压后资料”) os.makedirs(output_extracted_folder, exist_ok=True) # 确保目标文件夹存在 extract_zip_to_folder(source_zip_file, output_extracted_folder) 操作步骤: 准备zip文件: 使用2.1节的代码生成一个.zip文件,或者手动准备一个包含文件的.zip包。修改代码路径: 修改 source_zip_file 和 output_extracted_folder 为你实际的路径。 运行: 在VS Code终端运行 python extract_zip.py。 效果展示:
  • 恭喜你!通过本篇文章,你已经成功掌握了Python文件管理的两大核心魔法——文件批量压缩和文件解压!我们从文件太大难传输的痛点出发,学会了: Python文件压缩: 利用Python实现批量打包文件,让你的大文件传输变得轻松流畅。 Python文件解压: 运用Python实现文件解压,快速还原,告别等待。 现在,你不再需要担心大文件发送不出去,也不用忍受漫长的传输和解压过程。你拥有了一个强大的职场效率加速器,能够让你的文件秒变小,传输更流畅! 你平时都是用什么方法压缩文件的?你最希望Python在文件传输方面还能帮你实现哪些功能?比如自动上传到云盘?或者与邮件发送集成? 以上就是Python批量压缩和解压文件的操作指南的详细内容,更多关于Python批量压缩和解压文件的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: Python自动化解压多种格式的压缩文件(支持.zip/.rar/.7z格式) python解压缩文件或文件夹两种常见方式(附代码) Python实现批量解压文件夹下所有压缩包 Python实现批量压缩解压文件(zip、rar) python3压缩和解压文件案例总结
  • 目录
    • 1. 文件“瘦身”利器:Python批量压缩,一键打包,文件秒变小!
    • 2. 文件“还原”利器:Python批量解压缩,一键还原,轻松查看!
    • 3. 总结与展望:你的文件传输从此“飞”起来!

    你的工作生活中,是不是也经常遇到这些令人抓狂的场景?

    团队协作分发资料,一个几百MB的文件需要同事挨个下载,不仅效率奇低,还占用大量网络带宽。
    上传云盘备份照片,看着进度条龟速前进,仿佛回到拨号上网时代。

    面对这些重复且耗时的文件批量压缩和文件解压任务,你是不是也想告别手动压缩,寻找一个更智能、更高效的Python办公自动化解决方案?

    今天,我将手把手教你如何打造一个Python文件传输神器,让你:

    • Python文件压缩: 一键打包,让文件秒变小!
    • Python文件解压: 快速还原,让文件传输更流畅!

    Python一键让你的文件瞬间瘦身并快速还原,从此告别传输难题!

    处理大文件传输最直接的方法就是文件压缩。Python能帮你把整个文件夹甚至指定文件,快速打包成一个体积更小的.zip压缩包,让你的文件秒变小,传输更流畅!

    功能:

    • 批量压缩文件夹: 将整个项目目录及其所有子文件,一键打包成一个zip文件。
    • 智能选择文件: 你甚至可以控制只压缩特定类型的文件。
    • 解决思路: Python内置的zipfile库,就是你的最佳批量打包文件工具,无需安装第三方库,就能实现高效的Python文件压缩。
    import os
    import zipfile
    
    def compress_folder_to_zip(source_folder_path, output_zip_path, include_file_types=None):
        """
        批量压缩指定文件夹及其所有内容到一个zip文件。
        这是高效的Python文件压缩方法,实现批量打包文件。
        :param source_folder_path: 要压缩的源文件夹路径
        :param output_zip_path: 输出zip文件的完整路径 (例如 "project_archive.zip")
        :param include_file_types: 可选列表,只压缩指定扩展名的文件 (如 ['.jpg', '.pdf'])
        """
        if not os.path.exists(source_folder_path):
            print(f"❌ 源文件夹不存在:{source_folder_path}")
            return
    
        # 确保输出目录存在
        os.makedirs(os.path.dirname(output_zip_path), exist_ok=True)
    
        print(f"🚀 正在压缩文件夹:'{source_folder_path}' 到 '{output_zip_path}'...")
        try:
            with zipfile.ZipFile(output_zip_path, 'w', zipfile.ZIP_DEFLATED) as zf:
                # os.walk() 遍历文件夹及其子文件夹和文件
                for root, dirs, files in os.walk(source_folder_path):
                    # 计算当前文件在zip文件中的相对路径
                    relative_path = os.path.relpath(root, source_folder_path)
                    
                    for file in files:
                        file_path = os.path.join(root, file)
                        # 检查文件类型是否在需要包含的列表中
                        if include_file_types and os.path.splitext(file.lower())[1] not in include_file_types:
                            print(f"   ℹ️ 跳过文件(类型不符):{file}")
                            continue
    
                        # 将文件添加到zip文件,使用相对路径作为zip内部路径
                        zf.write(file_path, os.path.join(relative_path, file))
            
            # 获取压缩前后文件大小,进行直观对比
            original_size_bytes = sum(os.path.getsize(os.path.join(r, f)) for r, d, fs in os.walk(source_folder_path) for f in fs)
            compressed_size_bytes = os.path.getsize(output_zip_path)
    
            original_size_mb = original_size_bytes / (1024 * 1024) 
            compressed_size_mb = compressed_size_bytes / (1024 * 1024) 
            savings_percentage = ((original_size_bytes - compressed_size_bytes) / original_size_bytes) * 100 if original_size_bytes > 0 else 0
    
            print(f"✅ 压缩成功!")
            print(f"   原始总大小: {original_size_mb:.2f} MB")
            print(f"   压缩后大小: {compressed_size_mb:.2f} MB")
            print(f"   节省空间: {savings_percentage:.2f}%")
    
        except Exception as e:
            print(f"❌ 压缩失败:{e}")
    
    if __name__ == "__main__":
        # --- 请修改为你的实际文件夹路径 ---
        source_folder_path = os.path.expanduser("~/Desktop/我的项目资料") 
        output_zip_path = os.path.expanduser("~/Desktop/项目资料_归档.zip")
    
        # 确保源文件夹存在并有测试文件,可以创建一些子文件夹和文件
        os.makedirs(source_folder_path, exist_ok=True)
        # 示例:创建一些测试文件用于压缩
        with open(os.path.join(source_folder_path, "report.txt"), "w") as f: f.write("Hello Worldn" * 5000)
        with open(os.path.join(source_folder_path, "image.jpg"), "w") as f: f.write("binary data" * 100000)
        os.makedirs(os.path.join(source_folder_path, "subfolder"), exist_ok=True)
        with open(os.path.join(source_folder_path, "subfolder", "data.csv"), "w") as f: f.write("1,2,3n" * 2000)
    
        # 示例1:压缩整个文件夹
        print("n--- 示例1:批量压缩整个文件夹 ---")
        compress_folder_to_zip(source_folder_path, output_zip_path)
    
        # 示例2:只压缩特定类型的文件(如只压缩图片和PDF)
        # print("n--- 示例2:只压缩图片和PDF ---")
        # compress_folder_to_zip(source_folder_path, os.path.expanduser("~/Desktop/图片文档.zip"), include_file_types=['.jpg', '.png', '.pdf'])
    

    操作步骤:

    准备文件夹: 在桌面创建一个名为我的项目资料的文件夹,放入一些不同类型的文件和子文件夹,使其总大小稍大一些(比如几MB甚至几十MB),以体现压缩效果。

    修改代码路径: 复制上方代码到VS Code,保存为compress_files.py。修改 source_folder_path 和 output_zip_path 为你实际的文件夹路径和想要保存的zip文件路径。

    运行: 在VS Code终端运行 python compress_files.py。

    收到了同事发来的.zip压缩包?或者下载了一堆打包文件?Python能帮你一键解压,快速还原所有内容,让你的文件传输流程更加流畅!

    主要功能:

    • 批量解压缩: 快速将.zip包解压到指定位置,包括内部的文件夹结构。
    • 处理多种压缩包: zipfile库主要处理.zip格式,但未来还可以扩展支持.rar、.7z等。
    • 如何实现: zipfile库同样提供了简单的API,可以批量解压.zip文件到指定目录。
    import os
    import zipfile
    
    def extract_zip_to_folder(zip_file_path, target_folder_path):
        """
        解压缩zip文件到指定文件夹。
        这是高效的Python文件解压工具。
        :param zip_file_path: 要解压的zip文件完整路径
        :param target_folder_path: 解压目标文件夹路径
        """
        if not os.path.exists(zip_file_path):
            print(f"❌ Zip文件不存在:{zip_file_path}")
            return
    
        os.makedirs(target_folder_path, exist_ok=True) # 确保目标文件夹存在
    
        print(f"🚀 正在解压 '{zip_file_path}' 到 '{target_folder_path}'...")
        try:
            with zipfile.ZipFile(zip_file_path, 'r') as zf:
                zf.extractall(target_folder_path) # 解压所有内容
            print(f"✅ 解压成功!所有文件已解压到:{target_folder_path}")
        except Exception as e:
            print(f"❌ 解压失败:{e}")
    
    if __name__ == "__main__":
        # --- 请修改为你的实际zip文件路径和目标解压路径 ---
        # 假设你已经运行了2.1节的压缩代码,并生成了 '项目资料_归档.zip'
        source_zip_file = os.path.expanduser("~/Desktop/项目资料_归档.zip") 
        output_extracted_folder = os.path.expanduser("~/Desktop/解压后资料")
    
        os.makedirs(output_extracted_folder, exist_ok=True) # 确保目标文件夹存在
    
        extract_zip_to_folder(source_zip_file, output_extracted_folder)
    

    操作步骤:

    准备zip文件: 使用2.1节的代码生成一个.zip文件,或者手动准备一个包含文件的.zip包。
    修改代码路径: 修改 source_zip_file 和 output_extracted_folder 为你实际的路径。

    运行: 在VS Code终端运行 python extract_zip.py。

    效果展示:

    恭喜你!通过本篇文章,你已经成功掌握了Python文件管理的两大核心魔法——文件批量压缩和文件解压!我们从文件太大难传输的痛点出发,学会了:

    • Python文件压缩: 利用Python实现批量打包文件,让你的大文件传输变得轻松流畅。
    • Python文件解压: 运用Python实现文件解压,快速还原,告别等待。

    现在,你不再需要担心大文件发送不出去,也不用忍受漫长的传输和解压过程。你拥有了一个强大的职场效率加速器,能够让你的文件秒变小,传输更流畅!

    你平时都是用什么方法压缩文件的?你最希望Python在文件传输方面还能帮你实现哪些功能?比如自动上传到云盘?或者与邮件发送集成?

    以上就是Python批量压缩和解压文件的操作指南的详细内容,更多关于Python批量压缩和解压文件的资料请关注风君子博客其它相关文章!

    您可能感兴趣的文章:

    • Python自动化解压多种格式的压缩文件(支持.zip/.rar/.7z格式)
    • python解压缩文件或文件夹两种常见方式(附代码)
    • Python实现批量解压文件夹下所有压缩包
    • Python实现批量压缩解压文件(zip、rar)
    • python3压缩和解压文件案例总结

    站内搜索