插件窝 干货文章 Python 实现文件压缩和解压缩工具的实用方法

Python 实现文件压缩和解压缩工具的实用方法

压缩 ZIP 文件 files 350    来源:    2025-03-13

在Python中,可以使用zipfile模块来实现文件的压缩和解压缩操作。zipfile模块提供了创建、读取、写入和提取ZIP文件的功能。以下是一个简单的实现文件压缩和解压缩的工具示例。

1. 文件压缩工具

import zipfile
import os

def compress_files(zip_name, files_to_compress):
    """
    将多个文件压缩到一个ZIP文件中。

    :param zip_name: 压缩后的ZIP文件名
    :param files_to_compress: 要压缩的文件列表
    """
    with zipfile.ZipFile(zip_name, 'w') as zipf:
        for file in files_to_compress:
            if os.path.exists(file):
                zipf.write(file, os.path.basename(file))
                print(f"Added {file} to {zip_name}")
            else:
                print(f"File {file} does not exist.")

# 示例用法
files = ['file1.txt', 'file2.txt', 'file3.txt']
compress_files('archive.zip', files)

2. 文件解压缩工具

import zipfile

def extract_files(zip_name, extract_to='.'):
    """
    解压缩ZIP文件到指定目录。

    :param zip_name: 要解压的ZIP文件名
    :param extract_to: 解压到的目标目录,默认为当前目录
    """
    with zipfile.ZipFile(zip_name, 'r') as zipf:
        zipf.extractall(extract_to)
        print(f"Extracted {zip_name} to {extract_to}")

# 示例用法
extract_files('archive.zip', 'extracted_files')

3. 完整工具示例

以下是一个完整的工具示例,允许用户选择是压缩文件还是解压缩文件:

import zipfile
import os

def compress_files(zip_name, files_to_compress):
    """
    将多个文件压缩到一个ZIP文件中。

    :param zip_name: 压缩后的ZIP文件名
    :param files_to_compress: 要压缩的文件列表
    """
    with zipfile.ZipFile(zip_name, 'w') as zipf:
        for file in files_to_compress:
            if os.path.exists(file):
                zipf.write(file, os.path.basename(file))
                print(f"Added {file} to {zip_name}")
            else:
                print(f"File {file} does not exist.")

def extract_files(zip_name, extract_to='.'):
    """
    解压缩ZIP文件到指定目录。

    :param zip_name: 要解压的ZIP文件名
    :param extract_to: 解压到的目标目录,默认为当前目录
    """
    with zipfile.ZipFile(zip_name, 'r') as zipf:
        zipf.extractall(extract_to)
        print(f"Extracted {zip_name} to {extract_to}")

def main():
    print("1. Compress files")
    print("2. Extract files")
    choice = input("Choose an option (1 or 2): ")

    if choice == '1':
        zip_name = input("Enter the name of the zip file to create: ")
        files = input("Enter the files to compress (comma separated): ").split(',')
        compress_files(zip_name, files)
    elif choice == '2':
        zip_name = input("Enter the name of the zip file to extract: ")
        extract_to = input("Enter the directory to extract to (leave blank for current directory): ")
        if extract_to:
            extract_files(zip_name, extract_to)
        else:
            extract_files(zip_name)
    else:
        print("Invalid choice.")

if __name__ == "__main__":
    main()

4. 使用说明

  • 压缩文件:选择选项1,输入要创建的ZIP文件名和要压缩的文件列表(用逗号分隔)。
  • 解压缩文件:选择选项2,输入要解压的ZIP文件名和目标目录(可选,默认为当前目录)。

5. 注意事项

  • 确保要压缩的文件存在,否则会提示文件不存在。
  • 解压缩时,如果目标目录不存在,zipfile模块会自动创建该目录。
  • 该工具仅支持ZIP格式的压缩和解压缩。

通过这个工具,你可以轻松地在Python中实现文件的压缩和解压缩操作。