You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从多层目录的Zip文件中提取指定KMZ文件

从多层目录Zip中提取指定文件到同一文件夹

可以使用Python标准库中的zipfile模块实现需求,无需额外安装第三方包。核心思路是遍历Zip文件内的所有条目,筛选出目标.kmz文件,然后将它们提取到指定目录,同时忽略原有的多层目录结构。

代码实现

import zipfile
import os

# 配置路径
zip_file_path = "your_archive.zip"  # 替换为你的Zip文件路径
target_dir = "extracted_kmz_files"  # 目标文件夹,不存在则自动创建

# 创建目标文件夹
os.makedirs(target_dir, exist_ok=True)

# 定义需要提取的目标文件名
target_files = {"file1.kmz", "file2.kmz", "file3.kmz"}

with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
    # 遍历Zip内的所有文件条目
    for file_info in zip_ref.infolist():
        # 获取文件名(不含路径)
        file_name = os.path.basename(file_info.filename)
        # 判断是否是目标文件,且不是目录
        if file_name in target_files and not file_info.is_dir():
            # 提取文件到目标目录,arcname指定保存的文件名(去除原路径)
            zip_ref.extract(file_info, target_dir, arcname=file_name)
            print(f"已提取: {file_name}")

print("所有目标文件提取完成")

关键说明

  • os.makedirs(target_dir, exist_ok=True):确保目标文件夹存在,exist_ok=True避免文件夹已存在时抛出异常。
  • zip_ref.infolist():获取Zip文件内所有条目的详细信息,包括路径、是否为目录等。
  • os.path.basename(file_info.filename):从完整路径中提取纯文件名,用于匹配目标文件。
  • arcname=file_name:指定提取后的文件名,这样文件会直接保存到目标目录,而不是还原原有的多层子目录。
  • 加入not file_info.is_dir()判断,避免误提取同名目录(如果存在的话)。

扩展优化

如果需要提取所有.kmz文件而非指定三个,可修改判断条件为:

if file_name.endswith(".kmz") and not file_info.is_dir():

内容的提问来源于stack exchange,提问作者Ali Fathalian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:15:40