从zip存档中提取特定文件,而不在python中维护目录结构

问题描述 投票:19回答:1

我正在尝试使用python从zip存档中提取特定文件。

在这种情况下,从apk本身提取apk的图标。

我目前正在使用

with zipfile.ZipFile('/path/to/my_file.apk') as z:
    # extract /res/drawable/icon.png from apk to /temp/...
    z.extract('/res/drawable/icon.png', 'temp/')

哪个工作,在我的脚本目录中它创建temp/res/drawable/icon.png,这是临时加上与文件在apk内相同的路径。

我真正想要的是以temp/icon.png结束。

有没有办法直接使用zip命令,或者我需要提取,然后移动文件,然后手动删除目录?

python zip directory-structure
1个回答
27
投票

你可以使用zipfile.ZipFile.open

import os
import shutil

with zipfile.ZipFile('/path/to/my_file.apk') as z:
    with z.open('/res/drawable/icon.png') as zf, open('temp/icon.png', 'wb') as f:
        shutil.copyfileobj(zf, f)

或者使用zipfile.ZipFile.read

import os

with zipfile.ZipFile('/path/to/my_file.apk') as z:
    with open('temp/icon.png', 'wb') as f:
        f.write(z.read('/res/drawable/icon.png'))
© www.soinside.com 2019 - 2024. All rights reserved.