python无法打开ZipFile
我有一套python无法打开ZipFile,python,python-3.x,Python,Python 3.x,我有一套*.tar.xz档案。它们中的每一个都可能包含APK或JAR文件,这些文件实际上是zip归档文件。我试图在zip档案的内容中搜索一些模式。我使用下一个代码来完成它: #! /usr/bin/env python3 import os import glob import tarfile import shutil import zipfile def check(filename): if 'my_awesome_pattern' in open(file).read():
*.tar.xz
档案。它们中的每一个都可能包含APK或JAR文件,这些文件实际上是zip归档文件。我试图在zip档案的内容中搜索一些模式。我使用下一个代码来完成它:
#! /usr/bin/env python3
import os
import glob
import tarfile
import shutil
import zipfile
def check(filename):
if 'my_awesome_pattern' in open(file).read():
print('matches')
def process_zip(f):
z = zipfile.ZipFile(f, 'r') # <- here problem occurs
z.extractall('tmp')
z.close()
def process_jar(file):
print('JAR')
process_zip(file)
def process_apk(file):
print('APK')
process_zip(file)
def process_xml(file):
print('XML')
check(file)
def process_tar(filename):
print(filename)
tar = tarfile.open(filename)
for entry in tar.getnames():
print(">>> " + entry)
if entry.endswith('xml'):
tar.extract(entry)
process_xml(entry)
os.remove(entry)
elif entry.endswith('jar'):
tar.extract(entry)
process_jar(entry)
os.remove(entry)
elif entry.endswith('apk'):
tar.extract(entry)
process_apk(entry)
os.remove(entry)
tar.close()
for file in glob.glob("*.tar.xz"):
process_tar(file)
#/usr/bin/env蟒蛇3
导入操作系统
导入glob
导入tarfile
进口舒蒂尔
进口拉链
def检查(文件名):
如果打开(文件).read()中的“我的模式”:
打印('匹配')
def过程压缩(f):
z=zipfile.zipfile(f,'r')#>>setupwizardtablet all
>>>设置向导Tablet all/nodpi
>>>设置向导Tablet all/NodePI/priv应用程序
>>>SetupWizard平板电脑全部/nodpi/priv应用程序/SetupWizard
>>>SetupWizard tablet all/nodpi/priv app/SetupWizard/SetupWizard.apk
APK
回溯(最近一次呼叫最后一次):
文件“/scan.py”,第56行,在
进程(文件)
文件“/scan.py”,第49行,处理中
流程apk(输入)
文件“/scan.py”,第27行,处理中
进程压缩(文件)
文件“/scan.py”,第16行,进程中
z=zipfile.zipfile(f,'r')#Python不是我喜欢的,所以我正在寻求帮助。也许是related@dhkePython是自动化我的任务的最合适的工具。而且APK似乎还可以。至少解压
在没有任何警告的情况下解压。@MachineLearning是的,我想这是我的情况。由于我使用的是Python 3.4.0,所以不应该出现这种情况。谢谢链接@Serhio因此,解决方案可能是升级到较新的Python版本,或者手动引入本地zipfile
模块。谷歌创建符合标准的zip文件;-)我不喜欢蟒蛇,所以我在寻求帮助。也许是related@dhkePython是自动化我的任务的最合适的工具。而且APK似乎还可以。至少解压
在没有任何警告的情况下解压。@MachineLearning是的,我想这是我的情况。由于我使用的是Python 3.4.0,所以不应该出现这种情况。谢谢链接@Serhio因此,解决方案可能是升级到较新的Python版本,或者手动引入本地zipfile
模块。谷歌创建符合标准的zip文件;-)
setupwizardtablet-all.tar.xz
>>> setupwizardtablet-all
>>> setupwizardtablet-all/nodpi
>>> setupwizardtablet-all/nodpi/priv-app
>>> setupwizardtablet-all/nodpi/priv-app/SetupWizard
>>> setupwizardtablet-all/nodpi/priv-app/SetupWizard/SetupWizard.apk
APK
Traceback (most recent call last):
File "./scan.py", line 56, in <module>
process_tar(file)
File "./scan.py", line 49, in process_tar
process_apk(entry)
File "./scan.py", line 27, in process_apk
process_zip(file)
File "./scan.py", line 16, in process_zip
z = zipfile.ZipFile(f, 'r') # <- here problem occurs
File "/usr/lib/python3.4/zipfile.py", line 937, in __init__
self._RealGetContents()
File "/usr/lib/python3.4/zipfile.py", line 1034, in _RealGetContents
x._decodeExtra()
File "/usr/lib/python3.4/zipfile.py", line 415, in _decodeExtra
tp, ln = unpack('<HH', extra[:4])
struct.error: unpack requires a bytes object of length 4