I'm trying to extract a specific file from a zip archive using python.
In this case, extract an apk's icon from the apk itself.
I am currently using
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/')
which does work, in my script directory it's creating temp/res/drawable/icon.png
which is temp plus the same path as the file is inside the apk.
What I actually want is to end up with temp/icon.png
.
Is there any way of doing this directly with a zip command, or do I need to extract, then move the file, then remove the directories manually?
Do one of the following: To unzip a single file or folder, open the zipped folder, then drag the file or folder from the zipped folder to a new location. To unzip all the contents of the zipped folder, press and hold (or right-click) the folder, select Extract All, and then follow the instructions.
To unzip a file in Python, use the ZipFile. extractall() method. The extractall() method takes a path, members, pwd as an argument and extracts all the contents. To work on zip files using Python, we will use an inbuilt python module called zipfile.
You can use 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)
Or use 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'))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With