Python自动化文件处理之如何批量压缩和解压文件

 更新时间:2025年09月04日 09:44:14   作者:Python资讯站  
处理大量文件时,手动一个个压缩解压太费劲啦,Python就能帮咱们搞定这事,咱今天就说说咋用Python实现文件的批量压缩和解压,绝对能帮你省不少时间

1.准备工作

在开始之前得先装个"zipfile"模块,不过这玩意是Python内置的,不用额外安装。它就是咱们今天的主角,负责文件压缩解压的全部操作。

import zipfile
import os
from pathlib import Path

2.批量压缩文件

压缩文件说复杂也不复杂,说简单也不简单。咱们写个函数,把指定文件夹里的文件都打包成zip:

def batch\_zip\_files(folder\_path, zip\_name):
# 创建一个zip文件
with zipfile.ZipFile(zip\_name, 'w') as zip\_file:
# 遍历文件夹
for root, dirs, files in os.walk(folder\_path):
for file in files:file\_path = os.path.join(root, file)
# 把文件添加到zip中
zip\_file.write(file\_path, os.path.relpath(file\_path, folder\_path))
\# 使用方法
batch\_zip\_files('要压缩的文件夹', '压缩包名称.zip')

温馨提示:压缩前最好检查下磁盘空间够不够

3.批量解压文件

解压比压缩还简单,写个函数轻松搞定一堆zip文件:

def batch\_unzip\_files(zip\_folder, extract\_folder):
# 获取所有zip文件
zip\_files = Path(zip\_folder).glob('\*.zip')
for zip\_path in zip\_files:
with zipfile.ZipFile(zip\_path, 'r') as zip\_file:
# 解压到指定目录
zip\_file.extractall(path=os.path.join(extract\_folder, zip\_path.stem))
\# 使用方法
batch\_unzip\_files('存放zip的文件夹', '解压目标文件夹')

4.加点高级功能

咱们还能给压缩文件加个密码,防止文件被随便看到:

def secure\_zip\_files(folder\_path, zip\_name, password):
with zipfile.ZipFile(zip\_name, 'w', zipfile.ZIP\_DEFLATED) as zip\_file:
for root, dirs, files in os.walk(folder\_path):
for file in files:
file\_path = os.path.join(root, file)
zip\_file.write(file\_path,os.path.relpath(file\_path, folder\_path),pwd=password.encode())
\# 使用方法
secure\_zip\_files('要压缩的文件夹', '加密压缩包.zip', '你的密码')

解压带密码的zip文件也很容易:

def extract\_secure\_zip(zip\_path, extract\_folder, password):
with zipfile.ZipFile(zip\_path, 'r') as zip\_file:
zip\_file.extractall(
path=extract\_folder,
pwd=password.encode())
\# 使用方法
extract\_secure\_zip('加密压缩包.zip', '解压目标文件夹', '你的密码')

5.实用小贴士

写代码的时候记得加上错误处理,要不遇到问题程序就崩溃了:

def safe\_zip\_files(folder\_path, zip\_name):
try:with zipfile.ZipFile(zip\_name, 'w') as zip\_file:
for root, dirs, files in os.walk(folder\_path):
for file in files:
try:file\_path = os.path.join(root, file)zip\_file.write(file\_path)except Exception as e:
print(f'压缩{file}失败:{str(e)}')except Exception as e:
print(f'创建zip文件失败:{str(e)}')

完整代码示例:

import zipfile
import os
from pathlib import Path
def batch\_zip\_files(folder\_path, zip\_name):
with zipfile.ZipFile(zip\_name, 'w') as zip\_file:
for root, dirs, files in os.walk(folder\_path):
for file in files:file\_path = os.path.join(root, file)
zip\_file.write(file\_path, os.path.relpath(file\_path, folder\_path))
def batch\_unzip\_files(zip\_folder, extract\_folder):
zip\_files = Path(zip\_folder).glob('\*.zip')
for zip\_path in zip\_files: 
with zipfile.ZipFile(zip\_path, 'r') as zip\_file:
zip\_file.extractall(path=os.path.join(extract\_folder, zip\_path.stem))
def secure\_zip\_files(folder\_path, zip\_name, password):
with zipfile.ZipFile(zip\_name, 'w', zipfile.ZIP\_DEFLATED) as zip\_file:
for root, dirs, files in os.walk(folder\_path):
for file in files:file\_path = os.path.join(root, file)
zip\_file.write(file\_path,os.path.relpath(file\_path, folder\_path),pwd=password.encode())
def extract\_secure\_zip(zip\_path, extract\_folder, password):
with zipfile.ZipFile(zip\_path, 'r') as zip\_file:
zip\_file.extractall(
path=extract\_folder,
pwd=password.encode())
\# 测试代码
folder\_to\_zip = '要压缩的文件夹'
zip\_file\_name = '压缩包.zip'
extract\_folder = '解压目标文件夹'
password = '你的密码'
batch\_zip\_files(folder\_to\_zip, zip\_file\_name)
batch\_unzip\_files(os.path.dirname(zip\_file\_name), extract\_folder)
secure\_zip\_files(folder\_to\_zip, 'secure\_' + zip\_file\_name, password)
extract\_secure\_zip('secure\_' + zip\_file\_name, extract\_folder, password)

把这段代码复制到你的编辑器里,改下文件路径就能用啦!记得创建好相关文件夹,不然代码会报错。

到此这篇关于Python自动化文件处理之如何批量压缩和解压文件的文章就介绍到这了,更多相关Python压缩和解压文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python渗透测试入门之Scapy库的使用详解

    Python渗透测试入门之Scapy库的使用详解

    Scapy 是一个用来解析底层网络数据包的Python模块和交互式程序,该程序对底层包处理进行了抽象打包,使得对网络数据包的处理非常简便。本文就来聊聊它的具体使用,希望对大家有所帮助
    2023-03-03
  • Python基于Socket实现简易多人聊天室的示例代码

    Python基于Socket实现简易多人聊天室的示例代码

    这篇文章主要介绍了Python基于Socket实现简易多人聊天室的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python matplotlib绘图时指定图像大小及放大图像详解

    Python matplotlib绘图时指定图像大小及放大图像详解

    Matplotlib是一个面向对象的绘图库,我们绘制的图像中,每条曲线,每个边框等等都对应一个对象,下面这篇文章主要给大家介绍了关于Python matplotlib绘图时指定图像大小及放大图像的相关资料,需要的朋友可以参考下
    2022-05-05
  • Python获取数据库数据并保存在excel表格中的方法

    Python获取数据库数据并保存在excel表格中的方法

    今天小编就为大家分享一篇Python获取数据库数据并保存在excel表格中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • python中的deque基本用法详解

    python中的deque基本用法详解

    Python 中的 deque是一个低级别的、高度优化的双端队列,对于实现优雅、高效的Pythonic队列和堆栈很有用,这篇文章主要介绍了python中的deque基本用法的相关资料,需要的朋友可以参考下
    2017-11-11
  • Python实现识别手写数字大纲

    Python实现识别手写数字大纲

    这篇文章主要为大家详细介绍了Python实现识别手写数字的大纲,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 基于Python批量镶嵌拼接遥感影像/栅格数据(示例代码)

    基于Python批量镶嵌拼接遥感影像/栅格数据(示例代码)

    这篇文章主要介绍了基于Python批量镶嵌拼接遥感影像/栅格数据,使用时直接修改Mosaic_GDAL函数的入参就行了,选择数据存放的路径会自动拼接,命名也会自己设置无需额外修改,需要的朋友可以参考下
    2023-10-10
  • django基础学习之send_mail功能

    django基础学习之send_mail功能

    这篇文章主要给大家介绍了关于django基础学习之send_mail功能的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用django具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • python办公自动化(Excel)的实例教程

    python办公自动化(Excel)的实例教程

    使用Excel自动化处理,将会用到Python第三方库,所以我们需要提前通过来进行安装,下面这篇文章主要给大家介绍了关于python办公自动化(Excel)的相关资料,需要的朋友可以参考下
    2022-11-11
  • 详解Python3注释知识点

    详解Python3注释知识点

    在本篇文章里小编给大家分享了关于Python3注释的相关知识点以及用法,需要的朋友们学习下。
    2019-02-02

最新评论