text: import os.path
  import zipfile
  import tempfile
  import random
  import string
  import shutil
  import re
  
  from os.path  import basename
  
  class Unpacker(object):
     #--------------------------------------------------------------------------
     # 
     #--------------------------------------------------------------------------
     def entropy(self, length):
         return ''.join(random.choice('abcdefghijklmnopqrstuvwxyz') for i in range (length))
  
     #--------------------------------------------------------------------------
     # 
     #--------------------------------------------------------------------------
     def unpack_zipfile(self, file):
  
          if not os.path.isfile(file):
              raise Exception("Error: file, not found!")
  
          # Create unique working direction into which the zip file is expanded
          self.unzip_dir = "{0}/{1}_{2}".format(tempfile.gettempdir(), os.path.splitext(basename(file))[0], self.entropy(6))
  
          datfilename = ""
          binfilename = ""
  
          with zipfile.ZipFile(file, 'r') as zip:
              files = [item.filename for item in zip.infolist()]
              datfilename = [m.group(0) for f in files for m in [re.search('.*\.dat', f)] if m].pop()
              binfilename = [m.group(0) for f in files for m in [re.search('.*\.bin', f)] if m].pop()
  
              zip.extractall(r'{0}'.format(self.unzip_dir))
  
          datfile = "{0}/{1}".format(self.unzip_dir, datfilename)
          binfile = "{0}/{1}".format(self.unzip_dir, binfilename)
  
          # print "DAT file: " + datfile
          # print "BIN file: " + binfile
  
          return binfile, datfile
  
     #--------------------------------------------------------------------------
     # 
     #--------------------------------------------------------------------------
     def delete(self):
         # delete self.unzip_dir and its contents
         shutil.rmtree(self.unzip_dir)
  