code: def extract_zip(zip_path, destination_base_path):
      
      handle = open(zip_path, 'rb')
      zip_file = zipfile.ZipFile(handle)
      for name in zip_file.namelist():
          extension = os.path.splitext(name)[1]
          output_final_path = '%s%s' % (destination_base_path, extension)
          output_file = open(output_final_path, 'wb')
          output_file.write(zip_file.read(name))
          output_file.close()
  
      handle.close()
docs: Extract different extensions to the destination base path.
  
      Example : test.zip contains a.shp, a.dbf, a.prj
      and destination_base_path = '/tmp/CT-buildings
      Expected result :
          - /tmp/CT-buildings.shp
          - /tmp/CT-buildings.dbf
          - /tmp/CT-buildings.prj
  
      If two files in the zip with the same extension, only one will be
      copied.
  
      .. versionadded:: 3.2
  
      :param zip_path: The path of the .zip file
      :type zip_path: str
  
      :param destination_base_path: The destination base path where the shp
          will be written to.
      :type destination_base_path: str
  
      :raises: IOError - when not able to open path or output_dir does not
          exist.