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は、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 に答える