code: def unzip_file(i):
      
  
      import zipfile
  
      p=i.get('path','')
      if p=='':
         p=os.getcwd()
  
      p3=i['archive_file']
  
      overwrite=i.get('overwrite','')
  
      dau=i.get('delete_after_unzip','')
  
      s=[]
  
      f=open(p3,'rb')
      z=zipfile.ZipFile(f)
      for d in z.namelist():
          if not d.startswith('.') and not d.startswith('/') and not d.startswith('\\'):
             pp=os.path.join(p,d)
             if d.endswith('/'): 
                # create directory 
                if not os.path.exists(pp): os.makedirs(pp)
             else:
                ppd=os.path.dirname(pp)
                if not os.path.exists(ppd): os.makedirs(ppd)
  
                # extract file
                if os.path.isfile(pp) and overwrite!='yes':
                   s.append(d)
                else:
                   fo=open(pp, 'wb')
                   fo.write(z.read(d))
                   fo.close()
      f.close()
  
      if dau=='yes':
         os.remove(p3)
  
      return {'return':0, 'skipped':s}
docs: Input:  {
                archive_file         - full path to zip file  
                (path)               - path where unzip (current if empty)
                (overwrite)          - if 'yes', overwrite
                (delete_after_unzip) - if 'yes', delete original zip file after unzipping
              }
  
      Output: {
                return       - return code =  0, if successful
                                           >  0, if error
                (error)      - error text if return > 0
  
                skipped       - list of files which was not overwritten
             }