From: Leandro Lucarella Date: Sun, 11 Mar 2007 20:25:13 +0000 (+0000) Subject: Mejorar función unzip(). X-Git-Tag: 0_9~63 X-Git-Url: https://git.llucax.com/z.facultad/75.52/sercom.git/commitdiff_plain/f8119ad8a1a2cbcaecb4691c5d903e91a14750fb?hp=191bafa9684b6ead02f17e001dc5fcf3c2e210f6 Mejorar función unzip(). Ahora unzip() soporta un parámetro extra, que es un diccionario que indica donde descomprimir ciertos archivos en particular, si no se los quiere descomprimir en el path por default especificado. --- diff --git a/sercom/tester.py b/sercom/tester.py index 6e4088c..49d89ff 100644 --- a/sercom/tester.py +++ b/sercom/tester.py @@ -78,18 +78,25 @@ class RsyncError(Error, EnvironmentError): pass #}}} -def unzip(bytes, dst): # {{{ - log.debug(_(u'Intentando descomprimir en %s'), dst) +def unzip(bytes, default_dst='.', specific_dst=dict()): # {{{ + """Descomprime un buffer de datos en formato ZIP. + Los archivos se descomprimen en default_dst a menos que exista una entrada + en specific_dst cuya clave sea el nombre de archivo a descomprimir, en + cuyo caso, se descomprime usando como destino el valor de dicha clave. + """ + log.debug(_(u'Intentando descomprimir')) if bytes is None: return zfile = ZipFile(StringIO(bytes), 'r') for f in zfile.namelist(): + dst = join(specific_dst.get(f, default_dst), f) if f.endswith(os.sep): - log.debug(_(u'Creando directorio %s'), f) - os.mkdir(join(dst, f)) + log.debug(_(u'Creando directorio "%s" en "%s"'), f, dst) + os.mkdir(dst) else: - log.debug(_(u'Descomprimiendo archivo %s'), f) - file(join(dst, f), 'w').write(zfile.read(f)) + log.debug(_(u'Descomprimiendo archivo "%s" en "%s"'), f, dst) + file(dst, 'w').write(zfile.read(f)) + zfile.close() #}}} class SecureProcess(object): #{{{