📅  最后修改于: 2023-12-03 15:06:37.352000             🧑  作者: Mango
在 Python 编程中,我们经常需要将多个文件打包到一个 zip 文件中。这时我们可以使用 Python 标准库中的 zipfile 模块进行操作。
我们需要将一个名为 "py" 的目录中的所有文件(包括子目录中的文件)打包成一个 zip 文件。
在 Python 中,我们可以使用以下方式导入 zipfile 模块:
import zipfile
我们需要创建一个 ZipFile 对象,该对象表示一个 zip 文件。可以使用以下代码创建 ZipFile 对象:
zip_file = zipfile.ZipFile('py.zip', 'w')
其中,'py.zip' 是要生成的 zip 文件的文件名,'w' 表示我们要写入 zip 文件。
我们需要递归遍历目录 "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() 方法时,需要传递文件的完整路径。
在添加完所有文件后,需要关闭 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()