Python如何使用内置的zipfile模块来压缩和解压缩文件

在Python中,你可以使用内置的zipfile模块来压缩和解压缩文件。以下是一个简单的例子,说明如何使用这个模块来压缩一个文件或文件夹:

压缩单个文件

python   复制
import zipfile

def zip_file(file_path, zip_path):
    with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        zipf.write(file_path)

# 使用函数
zip_file('my_file.txt', 'my_file.zip')


在这个例子中,zip_file函数接受一个文件路径和一个zip文件路径作为参数。它创建一个新的ZipFile对象,使用'w'模式(表示写入)和zipfile.ZIP_DEFLATED压缩方法。然后,它使用write方法将文件添加到zip文件中。

压缩文件夹

压缩文件夹稍微复杂一些,因为你需要递归地遍历文件夹中的所有文件和子文件夹。以下是一个实现这个功能的函数:

python
复制
import os
import zipfile

def zip_directory(dir_path, zip_path):
    with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(dir_path):
            for file in files:
                file_path = os.path.join(root, file)
                relative_path = os.path.relpath(file_path, dir_path)
                zipf.write(file_path, relative_path)

# 使用函数
zip_directory('my_directory', 'my_directory.zip')


在这个例子中,zip_directory函数使用os.walk来遍历文件夹中的所有文件和子文件夹。对于每个文件,它计算文件相对于文件夹根目录的相对路径,然后将文件添加到zip文件中,使用相对路径作为zip文件中的文件名。这样,当你解压缩zip文件时,文件和文件夹的结构将与原始文件夹相同。

相关推荐

  1. Python压缩和解压缩模块zipfile和tarfile

    2024-04-08 20:24:04       34 阅读
  2. Ubuntu中如何压缩和解文件

    2024-04-08 20:24:04       35 阅读
  3. linux下使用 tar 压缩和解压 tar.gz 和 tar.xz 文件

    2024-04-08 20:24:04       35 阅读
  4. C#使用SharpZipLib对文件进行压缩和解

    2024-04-08 20:24:04       49 阅读
  5. C# 压缩和解文件文件夹

    2024-04-08 20:24:04       52 阅读
  6. 如何使用Python函数和模块

    2024-04-08 20:24:04       39 阅读
  7. xopen 一个高效压缩和解压缩python库碾压gzip

    2024-04-08 20:24:04       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-08 20:24:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-08 20:24:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-08 20:24:04       82 阅读
  4. Python语言-面向对象

    2024-04-08 20:24:04       91 阅读

热门阅读

  1. DTO基础知识

    2024-04-08 20:24:04       37 阅读
  2. 力扣 --组合

    2024-04-08 20:24:04       35 阅读
  3. C++基于堆实现了查找数组中最大的 k 个元素

    2024-04-08 20:24:04       40 阅读
  4. sentaurus学习笔记(三)

    2024-04-08 20:24:04       36 阅读
  5. 递归实现字符串长度的计算

    2024-04-08 20:24:04       34 阅读
  6. Istio-learning-note-about-Fault Injection(二)

    2024-04-08 20:24:04       33 阅读
  7. Web爬虫

    Web爬虫

    2024-04-08 20:24:04      35 阅读