page contents

用Python实现自动化化文件处理:如何批量压缩和解压文件?

处理大量文件时,手动一个个压缩解压太费劲啦!Python就能帮咱们搞定这事。咱今天就说说咋用Python实现文件的批量压缩和解压,绝对能帮你省不少时间。

attachments-2024-12-INub2isw676266ec98455.png处理大量文件时,手动一个个压缩解压太费劲啦!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入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2024-12-18 14:08
  • 阅读 ( 57 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1658 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1658 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章