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