Browse Source

added class ZipProcessorComp for composition example

master
T. Meissner 10 years ago
parent
commit
cc9fffdc82
1 changed files with 30 additions and 0 deletions
  1. +30
    -0
      python_3_oop/chapter05/zipprocessor.py

+ 30
- 0
python_3_oop/chapter05/zipprocessor.py View File

@ -30,3 +30,33 @@ class ZipProcessor:
for filename in os.listdir(self.temp_directory): for filename in os.listdir(self.temp_directory):
file.write(self._full_filename(filename), filename) file.write(self._full_filename(filename), filename)
shutil.rmtree(self.temp_directory) 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)

Loading…
Cancel
Save