def search_tarfile_obj(self, sf, tar): """Search a tarfile object""" for tarinfo in tar: if tarinfo.isfile() and self.is_search_file(tarinfo.name): tio = StringIO(tar.extractfile(tarinfo).read()) tio.seek(0) nsf = SearchFile(containers=sf.containers + [sf.relativepath]) nsf.path, nsf.filename = os.path.split(tarinfo.name) self.search_tarinfo_obj(nsf, tio)
def search_zipfile_obj(self, sf, zfo): """Search a ZipFile object""" zipinfos = zfo.infolist() for zipinfo in zipinfos: if zipinfo.file_size and self.is_search_file(zipinfo.filename): zio = StringIO(zfo.read(zipinfo.filename)) zio.seek(0) nsf = SearchFile(containers=sf.containers + [sf.relativepath]) nsf.path, nsf.filename = os.path.split(zipinfo.filename) self.search_zipinfo_obj(nsf, zio)