📜  从目录 py 生成 zipfile - Python (1)

📅  最后修改于: 2023-12-03 15:06:37.352000             🧑  作者: Mango

从目录 py 生成 zipfile - Python

在 Python 编程中,我们经常需要将多个文件打包到一个 zip 文件中。这时我们可以使用 Python 标准库中的 zipfile 模块进行操作。

需求

我们需要将一个名为 "py" 的目录中的所有文件(包括子目录中的文件)打包成一个 zip 文件。

实现步骤
  1. 导入 zipfile 模块

在 Python 中,我们可以使用以下方式导入 zipfile 模块:

import zipfile
  1. 创建 ZipFile 对象

我们需要创建一个 ZipFile 对象,该对象表示一个 zip 文件。可以使用以下代码创建 ZipFile 对象:

zip_file = zipfile.ZipFile('py.zip', 'w')

其中,'py.zip' 是要生成的 zip 文件的文件名,'w' 表示我们要写入 zip 文件。

  1. 递归遍历目录

我们需要递归遍历目录 "py" 中的所有文件,包括子目录中的文件,并将每个文件添加到 zip 文件中。

可以使用以下代码遍历目录:

import os

def add_to_zip(zip_file, path):
    if os.path.isdir(path):
        for file in os.listdir(path):
            add_to_zip(zip_file, os.path.join(path, file))
    else:
        zip_file.write(path)
    
add_to_zip(zip_file, 'py')

其中,os.listdir() 方法可以列出目录中的所有文件和子目录。我们可以使用 os.path.join() 方法获取文件的完整路径。

在 add_to_zip() 方法中,我们首先使用 os.path.isdir() 判断当前路径是否是目录;如果是目录,则递归遍历目录中的所有文件;如果不是目录,则将文件添加到 zip 文件中。

注意,我们在调用 ZipFile.write() 方法时,需要传递文件的完整路径。

  1. 关闭 ZipFile 对象

在添加完所有文件后,需要关闭 ZipFile 对象,以便保存生成的 zip 文件。

可以使用以下代码关闭 ZipFile 对象:

zip_file.close()
完整代码

以下是完整的 Python 代码:

import zipfile
import os

def add_to_zip(zip_file, path):
    if os.path.isdir(path):
        for file in os.listdir(path):
            add_to_zip(zip_file, os.path.join(path, file))
    else:
        zip_file.write(path)

zip_file = zipfile.ZipFile('py.zip', 'w')
add_to_zip(zip_file, 'py')
zip_file.close()
参考链接
  • Python zipfile 模块文档:https://docs.python.org/3/library/zipfile.html