Skip to main content
 首页 » 编程设计

python之提取并重命名 zip 文件夹

2025年05月04日15tintown

我想在 python 中从一个 zip 文件中提取一个特定的文件夹,然后用原始文件名重命名它。

例如,我有一个名为 test.zip 的文件,其中包含多个文件夹和子文件夹:

xl/media/image1.png 
xl/drawings/stuff.png 
stuff/otherstuff.png 

我想将 media 文件夹的内容提取到名为 test 的文件夹中: test/image1.png

请您参考如下方法:

使用

例如:

#!/usr/bin/env python 
"""Usage: 
./extract.py test.zip 
""" 
 
from zipfile import ZipFile 
import os 
import sys 
import tempfile 
import shutil 
 
 
ROOT_PATH = 'xl/media/' 
 
zip_name = sys.argv[1] 
zip_path = os.path.abspath(zip_name) 
extraction_dir = os.path.join(os.getcwd(), os.path.splitext(zip_name)[0]) 
temp_dir = tempfile.mkdtemp() 
 
 
with ZipFile(zip_path, 'r') as zip_file: 
    # Build a list of only the members below ROOT_PATH 
    members = zip_file.namelist() 
    members_to_extract = [m for m in members if m.startswith(ROOT_PATH)] 
    # Extract only those members to the temp directory 
    zip_file.extractall(temp_dir, members_to_extract) 
    # Move the extracted ROOT_PATH directory to its final location 
    shutil.move(os.path.join(temp_dir, ROOT_PATH), extraction_dir) 
 
# Uncomment if you want to delete the original zip file 
# os.remove(zip_path) 
 
print "Sucessfully extracted '%s' to '%s'" % (zip_path, extraction_dir) 

使用try..except block 来处理创建目录、删除文件和解压缩 zip 时可能发生的各种异常。