36

我正在尝试使用 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了 temp 加上与 apk 中的文件相同的路径。

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

有什么方法可以直接使用 zip 命令执行此操作,还是我需要提取,然后移动文件,然后手动删除目录?

4

1 回答 1

53

您可以使用zipfile.ZipFile.open

import shutil
import zipfile

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 zipfile

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'))
于 2013-07-18T17:13:13.713 回答