在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文件中。