Hola, saltate el puteo de los zips asi: en ubuntu:<br><br>sudo aptitude install p7zip-full <br>man 7z<br>leer un poquito que quieres hacer<br><br>luego haces un system call desde tu python<br><br>import os<br>
cmd = '7z extraer o lo que convenga'<br>
os.system(cmd)<br><br>Es mi primer mail en la lista y ya llevo tiempo, un saludo a todos<br><br><div class="gmail_quote">El 13 de julio de 2011 17:58, Luis Franco Vázquez <span dir="ltr"><<a href="mailto:luis@piezas.org.es">luis@piezas.org.es</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">¡Ah! y borra los zip originales, perdona, no me daba cuenta. Si quieres que no haga eso comenta:<br> unlink($archivoZip->getPathname());<br>
<br>Un saludo<br><br><div class="gmail_quote">El 13 de julio de 2011 17:56, Luis Franco Vázquez <span dir="ltr"><<a href="mailto:luis@piezas.org.es" target="_blank">luis@piezas.org.es</a>></span> escribió:<div><div>
</div><div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">Hola Jorge:<br><br>yo estaba haciendo lo mismo con PHP.<br>Prueba este script y me cuentas (ejecútalo si quieres desde consola con php nombre_script.php).<br>
Cambia la ruta del directorio y ya se encarga él de buscar todos los zip y de extraerlos en el mismo sitio.<br>
<br>Ya me dirás.<br>Un saludo<br><?php <br><br>/**<br> * Librería que extiende el FilterIterator del SPL de PHP<br> * para filtrar sólo los archivos de un tipo<br> * <br> */<br>class FiltroDirectorio extends FilterIterator<br>
{<br> private $_tipo; <br> <br> /**<br> * Constructor<br> * <br> * @access public<br> * @return void<br> */<br> public function __construct($path,$tipo)<br> {<br> parent::__construct(new DirectoryIterator($path));<br>
$this->_tipo = '.' . strtolower($tipo);<br> }<br> <br> /**<br> * Comprueba si durante una iteración se cumplen las condiciones<br> * <br> * @access public<br> * @return Boolean $aceptable<br>
*/<br> public function accept()<br> {<br> $aceptable = FALSE;<br> $iteradorDirectorio = $this->getInnerIterator();<br> $aceptable = $iteradorDirectorio->isFile();<br> if ($aceptable)<br>
{<br> $aceptable = (bool) substr_count(strtolower($iteradorDirectorio->getFilename()), $this->_tipo);<br> }<br> return $aceptable;<br> }<br> <br>}<br><br>$rutaDirZip = '/home/usuario/Escritorio/catastro/muestras/urbana_sin_historia/';<br>
$dir = new FiltroDirectorio($rutaDirZip,'zip');<br>foreach ($dir as $archivoZip)<br>{<br> $zip = new ZipArchive;<br> if ($zip->open($archivoZip->getPathname()) === TRUE) {<br> $zip->extractTo($rutaDirZip);<br>
$zip->close();<br> echo 'Extrayendo '.$archivoZip->getPathname().PHP_EOL;<br> echo 'Borrando '.$archivoZip->getPathname().PHP_EOL;<br> unlink($archivoZip->getPathname());<br>
<br> } else {<br> echo 'Fallo extracción: '.$archivoZip->getPathname().PHP_EOL;<br> }<br>}<br>?><br><div class="gmail_quote">El 13 de julio de 2011 17:31, Jorge Arévalo <span dir="ltr"><<a href="mailto:jorge.arevalo@deimos-space.com" target="_blank">jorge.arevalo@deimos-space.com</a>></span> escribió:<div>
<div></div><div><br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
Lo olvidaba. Es Python 2.7. Pasa igual con 2.6<br>
<br>
2011/7/13 Jorge Arévalo <<a href="mailto:jorge.arevalo@deimos-space.com" target="_blank">jorge.arevalo@deimos-space.com</a>>:<br>
<div><div></div><div>> Buenas,<br>
><br>
> Estoy procesando datos catastrales con Python, y me estoy encontrando<br>
> con un problema bastante molesto. Os cuento lo que hago:<br>
><br>
> 1.- Con certificado digital, me bajo unos shapefiles de prueba del<br>
> servicio de descarga masiva de datos catastrales<br>
> (<a href="https://www.sedecatastro.gob.es/OVCFrames.aspx?TIPO=TIT&a=masiv" target="_blank">https://www.sedecatastro.gob.es/OVCFrames.aspx?TIPO=TIT&a=masiv</a>).<br>
> Elijo la opción "rústica con historia". Me baja un fichero zip<br>
><br>
> 2.- Con Python, descomprimo ese fichero zip. Dentro tiene más ficheros<br>
> zip (PARCELA.zip, SUBPARCE.zip, etc).<br>
><br>
> 3.- Intento descomprimir cada uno de los ficheros por separado, y con<br>
> todos ellos Python me da una excepción "BadZipFile: File is not a zip<br>
> file". Llamando al método "is_zipfile"<br>
> (<a href="http://docs.python.org/library/zipfile.html" target="_blank">http://docs.python.org/library/zipfile.html</a>), efectivamente, me<br>
> devuelve FALSE. He estado buscando por Internet gente que ha tenido un<br>
> problema similar, pero no he encontrado ninguna respuesta<br>
> satisfactoria todavía. En StackOverflow hay un par de hilos sin<br>
> respuesta sobre el tema. Por lo que he podido sacar, será que los<br>
> ficheros no están en el formato PKZIP. 7-zip me los abre sin<br>
> problemas, y el unzip de Ubuntu lo mismo.<br>
><br>
> Hasta donde yo creía saber, el algoritmo PKZIP era el implementado<br>
> para la compresión ZIP, y pensé que cualquier librería que soportara<br>
> archivos zip no tendría problemas con dicho formato, pero se ve que<br>
> no.<br>
><br>
> ¿Alguien tiene experiencia con los ficheros del catastro?, ¿o con este<br>
> tipo de problema en ficheros zip?<br>
><br>
> Gracias por anticipado, y saludos,<br>
><br>
> --<br>
> Jorge Arévalo<br>
> Internet & Mobility Division, DEIMOS<br>
> <a href="mailto:jorge.arevalo@deimos-space.com" target="_blank">jorge.arevalo@deimos-space.com</a><br>
> <a href="http://es.linkedin.com/in/jorgearevalo80" target="_blank">http://es.linkedin.com/in/jorgearevalo80</a><br>
> <a href="http://mobility.grupodeimos.com/" target="_blank">http://mobility.grupodeimos.com/</a><br>
> <a href="http://gis4free.wordpress.com" target="_blank">http://gis4free.wordpress.com</a><br>
> <a href="http://geohash.org/ezjqgrgzz0g" target="_blank">http://geohash.org/ezjqgrgzz0g</a><br>
><br>
<br>
<br>
<br>
--<br>
Jorge Arévalo<br>
Internet & Mobility Division, DEIMOS<br>
<a href="mailto:jorge.arevalo@deimos-space.com" target="_blank">jorge.arevalo@deimos-space.com</a><br>
<a href="http://es.linkedin.com/in/jorgearevalo80" target="_blank">http://es.linkedin.com/in/jorgearevalo80</a><br>
<a href="http://mobility.grupodeimos.com/" target="_blank">http://mobility.grupodeimos.com/</a><br>
<a href="http://gis4free.wordpress.com" target="_blank">http://gis4free.wordpress.com</a><br>
<a href="http://geohash.org/ezjqgrgzz0g" target="_blank">http://geohash.org/ezjqgrgzz0g</a><br>
_______________________________________________<br>
Spanish mailing list<br>
<a href="http://lists.osgeo.org/mailman/listinfo/spanish" target="_blank">http://lists.osgeo.org/mailman/listinfo/spanish</a><br>
<a href="http://es.osgeo.org" target="_blank">http://es.osgeo.org</a><br>
<a href="http://twitter.com/osgeoes" target="_blank">http://twitter.com/osgeoes</a><br>
</div></div></blockquote></div></div></div><br>
</blockquote></div></div></div><br>
<br>_______________________________________________<br>
Spanish mailing list<br>
<a href="http://lists.osgeo.org/mailman/listinfo/spanish" target="_blank">http://lists.osgeo.org/mailman/listinfo/spanish</a><br>
<a href="http://es.osgeo.org" target="_blank">http://es.osgeo.org</a><br>
<a href="http://twitter.com/osgeoes" target="_blank">http://twitter.com/osgeoes</a><br>
<br></blockquote></div><br>