From f8119ad8a1a2cbcaecb4691c5d903e91a14750fb Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Sun, 11 Mar 2007 20:25:13 +0000 Subject: [PATCH] =?utf8?q?Mejorar=20funci=C3=B3n=20unzip().=20Ahora=20unzi?= =?utf8?q?p()=20soporta=20un=20par=C3=A1metro=20extra,=20que=20es=20un=20d?= =?utf8?q?iccionario=20que=20indica=20donde=20descomprimir=20ciertos=20arc?= =?utf8?q?hivos=20en=20particular,=20si=20no=20se=20los=20quiere=20descomp?= =?utf8?q?rimir=20en=20el=20path=20por=20default=20especificado.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- sercom/tester.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) 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): #{{{ -- 2.43.0