Publicidad

Comprimir y descomprimir en Python un fichero zip


Por Alex el 18/01/2021 , Comentar el artículo

Comparte este artículo:        




En Python comprimir y descomprimir ficheros zip es muy sencillo con el modulo zipfile que incorpora python ...


En esta url podemos ver la documentación del modulo zipFile:
https://docs.python.org/es/3/library/zipfile.html

En el github os he dejado un script con tres opciones de línea de comando:
https://github.com/depruebas/python-zip-unzip

El funcionamiento del script es sencillo, desde el terminal o el CMD lo utilizaremos de la siguiente forma:

  • Para comprimir

    python zip-directory.py Zip DIRECTORIO_A_COMPRIMIR NOMBRE_DEL_FICHERO

  • Para descomprimir

    python zip-directory.py UnZip DIRECTORIO_DONDE_DESCOMPRIMIR NOMBRE_DEL_FICHERO

  • Para ver su contenido

    python zip-directory.py View NOMBRE_DEL_FICHERO


A continuación os pego el script y como veréis esta comentado paso a paso y no será difícil seguirlo.


import os
import sys
import zipfile

# Funcion para comprimir un directorio
def zip_directory(path_zip, filename):
    
    zipf = zipfile.ZipFile( filename, 'w', zipfile.ZIP_DEFLATED)

    for root, dirs, files in os.walk(path_zip):
        for file in files:
            zipf.write(os.path.join(root, file))

    zipf.close()

# Funcion para descomprimir un fichero zip
def unzip_directory( path_unzip, filename):

    with zipfile.ZipFile( filename, 'r') as zip_ref:
       zip_ref.extractall( path_unzip)

# Mostramos el contenido de un fichero Zip
def zip_view( filename):

     with zipfile.ZipFile( filename) as file:
        file.printdir()


# Ayuda para usar el script
def help():
    print(""" Wrong parameter:
    
    Usage:
        python zip-directory.py Zip path filename       # To zip directory recursively
        python zip-directory.py UnZip path filename     # To un Zip
        python zip-directory.py View filename           # To view files in zip archive

    """)


# Inicio del programa
#
if __name__ == '__main__':      

    # Comprobamos si pasan algun paramentro, si no hay parametro salta al mensaje de error
    #
    if len(sys.argv) > 1:
        
        # Si el primer parametro es la palabra "Zip" => Comprimimos
        #
        if ( sys.argv[1] == 'Zip'):

            # Revisamos los dos siguiente parametros que se han entrado para obtener
            # la ruta a zipear y el nombre que le daremos al archivo zip
            #
            # Aqui se tendria que colocar la validación para que en caso de que estos dos
            # parametros no viniera generará una alerta o error
            #
            filename =  sys.argv[3]
            path =  sys.argv[2]

            # Escribimos por pantalla que va realizar el script
            print( sys.argv[1] + ": directory: " + path + " into file: " + filename)

            # Llamamos a la funcion que zipea
            zip_directory( path, filename)

         # Si el primer parametro es la palabra "UnZip" => Descomprimimos
         #
        elif( sys.argv[1] == 'UnZip'):

            # Revisamos los dos siguiente parametros que se han entrado para obtener
            # la ruta donde descomprimiremos y el fichero a descomprimir
            #
            # Aqui se tendria que colocar la validación para que en caso de que estos dos
            # parametros no viniera generará una alerta o error
            #
            filename =  sys.argv[3]
            path =  sys.argv[2]

            # Escribimos por pantalla que va realizar el script
            print( sys.argv[1] + ": file: " + filename + " directory: " + path)

            # LLamamos a la función para descomprimir
            unzip_directory( path, filename)
        
        # Si el primer parametro es la palabra "View" => Ver contenido del fichero zip
         #
        elif( sys.argv[1] == 'View'):

            # Solo requiere un parametro mas que es el nombre del fichero zip
            #
            # Aqui se tendria que colocar la validación para que en caso de que estos dos
            # parametros no viniera generará una alerta o error
            #
            filename =  sys.argv[2]

            # Escribimos por pantalla que va realizar el script
            print( sys.argv[1] + ": file: " + filename )

            # Llamamos a la función para visualizar el fichero
            zip_view( filename)

        else:
            # Llamamos a la función de mostrar la ayuda
            #
            print( sys.argv[1] + ": unknown command")
            help()
            
    else:
        # Llamamos a la función de mostrar la ayuda
        #
        print( "Unknown command")
        help()


    sys.exit()




Y esto es todo amigos, feliz programming
Saludos
Alex.



Si te ha gustado el artículo compartelo en:      




Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.