Herramientas de usuario

Herramientas del sitio


python:archivos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
python:archivos [2022/04/07 15:36] – [Trabajar con archivos comprimidos ZIP] albertopython:archivos [2023/06/05 16:55] (actual) – [Lectura/escritura con open()] alberto
Línea 162: Línea 162:
 Devuelve el número de caracteres escritos. Devuelve el número de caracteres escritos.
  
 +=== Sentencia with ===
 +Con el fin de tener un código más limpio, es común a la hora de trabajar con directorios usar la sentencia **with**, que nos permite evitar tener que estar cerrando el archivo con 'close()'. \\ 
 +Un ejemplo:
 +<code python>
 +with open('file_path', 'w') as file:
 +    file.write('hello world !')
 +</code>
 ===== Guardar variables ===== ===== Guardar variables =====
 ==== Guardar variables en archivos binarios ==== ==== Guardar variables en archivos binarios ====
Línea 310: Línea 317:
 Para trabajar con archivos comprimidos en ZIP, (extensión .zip) usaremo el módulo **zipfile**.\\ Para trabajar con archivos comprimidos en ZIP, (extensión .zip) usaremo el módulo **zipfile**.\\
 La forma de trabajar es muy similar, asignando a tipos de datos ZipFile (similares a Path) el archivo comprimido con el que trabajaremos para gestionar sus datos. La forma de trabajar es muy similar, asignando a tipos de datos ZipFile (similares a Path) el archivo comprimido con el que trabajaremos para gestionar sus datos.
-==== Comprimir ZIP ====+
 ==== Leer ZIP ==== ==== Leer ZIP ====
 +Para leer archivos comprimidos en ZIP:
 +  - Asignamos el archivo a una variable ZipFile con el método ZipFile del módulo zipfile.<code python>exampleZip = zipfile.ZipFile(Path.wcd()/'ham'/'meat.zip')</code>
 +  - Podemos listar el contenido con el método **namelist()**, que devuelve una lista de strings con las direcciones relativas del contenido. <code python>exampleZip.namelist()</code>
 +  - Podemos obtener información de cualquier achivo comprimido en ZIP con el método **getinfo(//nombre_archivo//)**. Devuelve un objeto en el que se pueden consultar los atributos **file_size** y **compress_size**. <code python>spamInfo = exampleZip.getinfo('spam.txt')
 +spamInfo.file_size
 +spamInfo.compress_size</code>
 +  - Una vez hemos terminado de leer en el interior del archivo comprimido, lo cerramos con el métoo close(). <code python>exampleZip.close()</code>
 +
 +
 ==== Extraer ZIP ==== ==== Extraer ZIP ====
 +Para extraer todo el contenido de un ZIP, se utiliza el método **extractall()**, al que se le puede pasar un argumento string en el que se define la dirección en la que se desea extraer. Si no, se extraerá en el directorio raíz.
 +<code python>
 +import zipfile, os
 +from pathlib import Path
 +
 +p = Path.home()
 +exampleZip = zipfile.ZipFile(p / 'example.zip')
 +exampleZip.extractall()  # exampleZip.extractall('C:\\delicious') # Para extraerlo en una diección concreta.
 +exampleZip.close()
 +</code>
 +
 +Para extraer un archivo concreto se usa el método **extract()**, en la que el primer argumento es el archivo a extraer, y el segundo (opcional), la dirección en la que se extraerá (si no existe, se crea).
 +<code python>
 +>>>exampleZip.extract('spam.txt')
 +'C:\\spam.txt'
 +>>> exampleZip.extract('spam.txt', 'C:\\some\\new\\folders')
 +'C:\\some\\new\\folders\\spam.txt'
 +>>> exampleZip.close()
 +</code>
 ==== Crear y añadir a ZIP ==== ==== Crear y añadir a ZIP ====
 +Para crear un nuevo archivo ZIP, se utiliza el método **ZipFile()**, al iguar que se hacía para leer de su interior:
 +  * Su primer argumento será el nombre de archivo.
 +  * El segundo argumento será 
 +    * 'w' para añadir archivos o directorios, sobreescribiendo los que había antes.
 +    * 'a' para añadir archivos o directorios sin sobreescribir los que había antes.
 +
 +Para añadir elementos (archivos y directorios) al ZIP, se usará el método **write()**:
 +  * El primer argumento será un string del archivo o directorio a comprimir.
 +  * El segundo argumento será el algoritmo de comprensión que se usará, por ejemplo ZIP_DEFLATED, que va bien con cualquier tipo de dato).
 +
 +<code Python>
 +>>> import zipfile
 +>>> newZip = zipfile.ZipFile('new.zip', 'w')
 +>>> newZip.write('spam.txt', compress_type=zipfile.ZIP_DEFLATED)
 +>>> newZip.close()
 +</code>
python/archivos.1649338611.txt.gz · Última modificación: por alberto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki