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

使用Python实现简单的文件压缩工具

发布时间:2023-12-04 10:39:48

Python中可以使用zipfile模块来实现文件压缩功能。下面是一个简单的文件压缩工具的实现,并附带一个使用例子。

import os
import zipfile

def zip_files(folder_path, output_path):
    """
    压缩指定文件夹中的所有文件和文件夹。

    Args:
        folder_path (str): 要压缩的文件夹路径。
        output_path (str): 压缩文件的输出路径。

    Returns:
        None
    """
    # 创建一个ZipFile对象,用于写入压缩文件
    with zipfile.ZipFile(output_path, 'w') as zipf:
        # 遍历文件夹中的所有文件和文件夹
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                # 获取文件的绝对路径
                file_path = os.path.join(root, file)
                # 将文件写入压缩文件
                zipf.write(file_path, os.path.relpath(file_path, folder_path))

if __name__ == '__main__':
    # 压缩文件夹的路径
    folder_path = 'path/to/folder'
    # 压缩文件的输出路径
    output_path = 'compressed.zip'

    # 调用函数进行文件压缩
    zip_files(folder_path, output_path)

在使用例子中,将path/to/folder替换为要压缩的文件夹的实际路径,compressed.zip替换为要输出压缩文件的路径。然后运行脚本,即可将该文件夹中的所有文件和文件夹压缩为一个名为compressed.zip的压缩文件。

如果想要将多个文件或文件夹添加到同一个压缩文件中,只需要多次调用zipf.write()方法即可。比如,想要将文件夹A和文件夹B压缩到同一个压缩文件中,可以像下面这样修改代码:

import os
import zipfile

def zip_files(folder_paths, output_path):
    """
    压缩指定文件夹中的所有文件和文件夹。

    Args:
        folder_paths (list of str): 要压缩的文件夹路径列表。
        output_path (str): 压缩文件的输出路径。

    Returns:
        None
    """
    # 创建一个ZipFile对象,用于写入压缩文件
    with zipfile.ZipFile(output_path, 'w') as zipf:
        # 遍历文件夹路径列表
        for folder_path in folder_paths:
            # 遍历文件夹中的所有文件和文件夹
            for root, dirs, files in os.walk(folder_path):
                for file in files:
                    # 获取文件的绝对路径
                    file_path = os.path.join(root, file)
                    # 将文件写入压缩文件
                    zipf.write(file_path, os.path.relpath(file_path, folder_path))

if __name__ == '__main__':
    # 要压缩的文件夹路径列表
    folder_paths = ['path/to/folderA', 'path/to/folderB']
    # 压缩文件的输出路径
    output_path = 'compressed.zip'

    # 调用函数进行文件压缩
    zip_files(folder_paths, output_path)

在这个例子中,需要将要压缩的文件夹路径作为一个列表传递给zip_files()函数,这样就可以将多个文件夹中的文件和文件夹都添加到同一个压缩文件中了。