温馨提示×

Python解压zip文件时如何过滤文件

小樊
81
2024-12-07 13:47:40
栏目: 编程语言

在Python中,您可以使用zipfile库来解压ZIP文件并过滤文件

import zipfile
import os

def filter_files(zip_path, filter_func):
    with zipfile.ZipFile(zip_path, 'r') as zip_ref:
        # 获取ZIP文件内所有文件和目录名
        file_names = zip_ref.namelist()

        # 使用过滤函数过滤文件名
        filtered_file_names = [name for name in file_names if filter_func(name)]

        # 解压过滤后的文件到指定目录
        with zipfile.ZipFile('filtered_zip.zip', 'w') as filtered_zip_ref:
            for file_name in filtered_file_names:
                filtered_zip_ref.write(zip_ref.open(file_name), arcname=file_name)

# 示例过滤函数,仅提取所有以'.txt'结尾的文件
def filter_txt_files(file_name):
    return file_name.endswith('.txt')

# 使用示例
zip_path = 'example.zip'
filter_files(zip_path, filter_txt_files)

在这个示例中,我们定义了一个名为filter_files的函数,它接受一个ZIP文件路径和一个过滤函数作为参数。过滤函数应该返回一个布尔值,表示是否应该保留给定的文件名。

在示例过滤函数filter_txt_files中,我们仅提取所有以.txt结尾的文件。您可以根据需要修改此过滤函数以满足您的需求。

最后,我们调用filter_files函数并提供ZIP文件路径和过滤函数。这将解压ZIP文件并将过滤后的文件保存到名为filtered_zip.zip的新ZIP文件中。

0