import os
|
|
import shutil
|
|
import zipfile
|
|
|
|
|
|
class ZipProcessorInh:
|
|
|
|
def __init__(self, zipname):
|
|
self.zipname = zipname
|
|
self.temp_directory = "unzipped-{}".format(self.zipname[:-4])
|
|
|
|
def _full_filename(self, filename):
|
|
return os.path.join(self.temp_directory, filename)
|
|
|
|
def process_zip(self):
|
|
self.unzip_files()
|
|
self.process_files()
|
|
self.zip_files()
|
|
|
|
def unzip_files(self):
|
|
os.mkdir(self.temp_directory)
|
|
zip = zipfile.ZipFile(self.zipname)
|
|
try:
|
|
zip.extractall(self.temp_directory)
|
|
finally:
|
|
zip.close()
|
|
|
|
def zip_files(self):
|
|
file = zipfile.ZipFile(self.zipname, "w")
|
|
for filename in os.listdir(self.temp_directory):
|
|
file.write(self._full_filename(filename), filename)
|
|
shutil.rmtree(self.temp_directory)
|
|
|
|
|
|
class ZipProcessorComp:
|
|
|
|
def __init__(self, zipname, processor):
|
|
self.zipname = zipname
|
|
self.temp_directory = "unzipped-{}".format(zipname[:-4])
|
|
self.processor = processor
|
|
|
|
def _full_filename(self, filename):
|
|
return os.path.join(self.temp_directory, filename)
|
|
|
|
def process_zip(self):
|
|
self.unzip_files()
|
|
self.processor.process(self)
|
|
self.zip_files()
|
|
|
|
def unzip_files(self):
|
|
os.mkdir(self.temp_directory)
|
|
zip = zipfile.ZipFile(self.zipname)
|
|
try:
|
|
zip.extractall(self.temp_directory)
|
|
finally:
|
|
zip.close()
|
|
|
|
def zip_files(self):
|
|
file = zipfile.ZipFile(self.zipname, "w")
|
|
for filename in os.listdir(self.temp_directory):
|
|
file.write(self._full_filename(filename), filename)
|
|
shutil.rmtree(self.temp_directory)
|