我想使用 python 解压缩 Android 备份文件。
根据 http://nelenkov.blogspot.com/2012/06/unpacking-android-backups.html可以使用
解压缩未加密的 adb 文件dd if=mybackup.ab bs=24 skip=1|openssl zlib -d > mybackup.tar
和
tar xvf mybackup.tar
这些可以用python完成吗? Python 有zlib
、gzip
和tarfile
,看起来应该可以用。无论如何,如果可以做到,怎么做?
tarfile.open('filename.tar', 'r:')
是否适用于第二步?
顺便说一句,我在 Windows 上。
请您参考如下方法:
如果文件不是太大以至于所有内容都无法轻松放入内存,则在从标准库中导入所需内容后:
with open('mybackup.ab', 'rb') as f:
f.seek(24) # skip 24 bytes
data = f.read() # read the rest
tarstream = zlib.decompress(data)
tf = tarfile.open(fileobj=io.BytesIO(tarstream))
现在在 tf
中,您有一个 TarFile
实例,如 https://docs.python.org/2/library/tarfile.html#tarfile-objects 中所述,因此您可以获取其内容列表、提取一个或多个成员等。
如果备份太大以至于所有这些位都无法轻松地放入内存中,您当然可以将任何或所有中间结果写入磁盘;但如果它足够小,将所有内容都保存在内存中应该会导致执行速度更快。