欢迎访问宙启技术站
智能推送

Python中使用zipfile()压缩文件和文件夹的方法

发布时间:2023-12-30 13:50:46

在Python中使用zipfile模块来压缩文件和文件夹非常简单。zipfile模块提供了ZipFile类,该类具有压缩文件的方法和属性。下面是一些使用zipfile模块的常见方法和例子。

1. 创建一个ZipFile对象

要开始压缩文件,首先需要创建一个ZipFile对象。可以通过ZipFile类的构造函数来创建该对象。

import zipfile

zip_obj = zipfile.ZipFile('compressed.zip', 'w')

上面的例子中,创建了一个名为'compressed.zip'的ZIP文件。'w'参数表示创建一个新的ZIP文件。也可以使用其他文件操作模式,例如'r'用于读取ZIP文件,'a'用于向ZIP文件添加文件,'x'用于从ZIP文件中提取文件等。

2. 压缩一个文件

使用write()方法将指定的文件添加到ZIP文件中。

zip_obj.write('file.txt')

上面的例子中,将名为'file.txt'的文件添加到ZIP文件中。可以使用相对路径或绝对路径来指定文件的位置。

3. 压缩一个文件夹

可以使用write()方法将整个文件夹添加到ZIP文件中。需要在路径后添加'/'或'\\'以指示文件夹。

zip_obj.write('folder/', arcname='folder')

上面的例子中,将名为'folder'的文件夹添加到ZIP文件中。arcname参数用于指定添加到ZIP文件中的文件夹的名称。

4. 压缩多个文件

可以在一个write()方法中指定多个文件以一次性添加到ZIP文件中。

zip_obj.write('file1.txt')
zip_obj.write('file2.txt')

上面的例子中,将'file1.txt'和'file2.txt'两个文件添加到ZIP文件中。

5. 压缩文件夹及其子文件夹

要添加一个文件夹及其所有子文件夹和文件,可以使用os.walk()函数遍历文件夹中的所有文件。

import os

def add_folder(zip_obj, folder_path):
    for foldername, _, filenames in os.walk(folder_path):
        for filename in filenames:
            file_path = os.path.join(foldername, filename)
            zip_obj.write(file_path, arcname=os.path.relpath(file_path, folder_path))

add_folder(zip_obj, 'folder/')

上面的例子中,调用add_folder函数将名为'folder'的文件夹及其所有子文件夹和文件添加到ZIP文件中。使用os.path.relpath()函数将文件的相对路径添加到ZIP文件中。

6. 关闭ZIP文件

完成所有文件的添加后,使用close()方法关闭ZIP文件。

zip_obj.close()

上面的例子中,关闭了先前创建的ZIP文件。

以上是使用zipfile模块压缩文件和文件夹的常见方法和例子。根据具体的需求,可以进一步调整和扩展这些例子。