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

如何使用Python提取zip文件中以‘first’开头的文件

没问题,这事儿用Python标准库的zipfile模块就能轻松搞定,不用装额外依赖,我给你两种实用的实现方式,你可以按需选择:

方法1:直接提取符合条件的文件

这是最直接的方式,遍历压缩包内的所有文件,筛选出以first开头的文件并提取到指定目录(如果不指定路径,默认提取到当前工作目录):

import zipfile
import os

# 定义压缩包路径和目标提取目录
zip_path = 'test.zip'
extract_dir = './extracted_first_files'

# 创建目标目录(如果不存在的话)
os.makedirs(extract_dir, exist_ok=True)

# 打开压缩包并处理
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
    # 遍历压缩包内所有文件/文件夹
    for file_name in zip_ref.namelist():
        # 筛选文件名以'first'开头的文件(排除文件夹)
        if file_name.startswith('first') and not file_name.endswith('/'):
            # 提取文件到指定目录
            zip_ref.extract(file_name, extract_dir)
            print(f"已提取文件: {file_name}")

小细节说明:

  • os.makedirs(extract_dir, exist_ok=True):确保目标提取目录存在,不存在就自动创建,避免报错。
  • 加上not file_name.endswith('/')是为了排除压缩包内可能存在的同名文件夹(如果有的话),只提取文件。
  • 如果你的文件嵌套在子目录里,比如sub/first.txt,那需要用os.path.basename(file_name).startswith('first')来判断文件名本身,而不是完整路径。

方法2:读取文件内容后再提取(可选)

如果你需要先查看文件内容再决定是否提取,可以用这种方式,先打开压缩包内的文件读取内容,确认后再提取:

import zipfile

zip_path = 'test.zip'

with zipfile.ZipFile(zip_path, 'r') as zip_ref:
    for file_name in zip_ref.namelist():
        if file_name.startswith('first') and not file_name.endswith('/'):
            # 先读取文件内容(假设是文本文件,按需调整编码)
            with zip_ref.open(file_name) as file:
                content = file.read().decode('utf-8')
                print(f"文件{file_name}内容预览: {content[:50]}...")  # 预览前50个字符
            
            # 确认后提取
            zip_ref.extract(file_name)
            print(f"已提取文件: {file_name}")

两种方法都很实用,第一种适合直接批量提取,第二种适合需要校验内容的场景~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:51:51