如何使用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
相关产品推荐
相关产品推荐

