python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python压缩和解压文件

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

作者: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压缩和解压文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文