Un archivo comprimido contiene muchos archivos, directorio y subdirectorios. Hay muchas aplicaciones disponibles para crear un archivo comprimido de cualquier archivo o directorio grande y recuperar archivos o carpetas mediante la extracción de un archivo comprimido. Cuando queremos transferir cualquier archivo o carpeta grande a través de Internet, es mejor comprimir el contenido antes de transferirlo. Esto hace que la tarea sea más rápida. Puedes usar scripts de python para comprimir y extraer cualquier archivo o directorio grande. El módulo zipfile de python se usa para hacer la tarea. Cómo se puede utilizar python3 para comprimir cualquier archivo o directorio se muestra en este tutorial mediante el uso de varios ejemplos.
Crear un nuevo archivo llamado ‘zipcode1.py’ y añadir el siguiente código. módulo zipfile se importa para comprimir el archivo. temp.zip se asigna como nombre de archivo zip con el modo de escritura y, a continuación, el nombre del archivo original, temp.txt y el tipo de compresión se dan como parámetros en el método de escritura.
zip_file = zipfile.ZipFile(‘temp.zip’, ‘w’)
zip_file.write(‘temp.txt’, compress_type=zipfile.ZIP_DEFLATED)
zip_file.close()
Ejecuta el script
El tamaño de temp.txt es de 27 bytes y, tras la compresión, el tamaño de temp.zip es de 2 bytes.
Ejemplo-2: Compresión de un directorio concreto
Crea un nuevo archivo llamado ‘zipcode2.py’ y añade el siguiente código. Un directorio puede contener muchos archivos, carpetas y subcarpetas. Para leer el contenido del directorio, se importa el módulo os de python con el módulo zipfile para comprimir el directorio. En este script, se utiliza el directorio mydir para la compresión.
importar os
importar zipfile
# Declarar la función para devolver todas las rutas de archivos del directorio concreto
def retrieve_file_paths(dirName):
# configurar la variable file paths
filePaths =
# Leer todas las listas de directorios, subdirectorios y archivos
para la raíz, directorios, archivos en os.walk(dirName):
for filename in files:
# Crear la ruta de archivo completa utilizando el módulo os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# devuelve todas las rutas
return filePaths
# Declara la función main
def main():
# Asignar el nombre del directorio a comprimir
dir_name = ‘mydir’
# Llamar a la función para recuperar todos los archivos y carpetas del directorio asignado
filePaths = retrieve_file_paths(dir_name)
# imprimir la lista de todos los archivos a comprimir
print(‘La siguiente lista de archivos será comprimida:’)
for fileName in filePaths:
print(fileName)
# escribir los archivos en un zipfile
zip_file = zipfile.ZipFile(dir_name+’.zip’, ‘w’)
con zip_file:
# escribiendo cada archivo uno por uno
for file in filePaths:
zip_file.write(file)
print(dir_name+’.archivo zip se ha creado con éxito!’)
# Llama a la función main
if __name__ == “__main__”:
main()
Ejecuta el script
El tamaño de mydir es de 21 bytes y después de la compresión, el tamaño de mydir.zip es de 2 bytes.
Ejemplo-3: Compresión de un directorio dado por el argumento de la línea de comandos
Crea un nuevo archivo llamado ‘zipcode3.py’ y añade el siguiente código. Para leer el valor de la línea de comandos, se importa otro módulo python sys con los módulos os y zipfile.
importar os
importar sys
importar zipfile
# Declarar la función para devolver todas las rutas de archivos de un directorio concreto
def recuperar_rutas_de_archivos(dirName):
# configurar la variable de rutas de archivos
Rutas_de_archivos =
# Leer todas las listas de directorios, subdirectorios y archivos
para la raíz, directorios, archivos en os.walk(dirName):
for filename in files:
# Crear la ruta de archivo completa utilizando el módulo os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# devuelve todas las rutas
return filePaths
# Declara la función main
def main():
# Comprueba que se dan dos argumentos en el momento de ejecutar el script
if len (sys.argv) != 2 :
print (“Has introducido el nombre del directorio a comprimir”)
sys.exit (1)
# Establecer el nombre del directorio desde el argumento del comando
dir_name = sys.argv
# Establecer el nombre del archivo zip
zipFileName = dir_name + “.zip”
# Llamar a la función para recuperar todos los archivos y carpetas del directorio asignado
filePaths = retrieve_file_paths(dir_name)
# imprimir la lista de archivos a comprimir
print(‘La siguiente lista de archivos se comprimirá:’)
for fileName in filePaths:
print(fileName)
# escribir archivos y carpetas en un archivo zip
zip_file = zipfile.ZipFile(zipFileName, ‘w’)
con zip_file:
# escribe cada archivo por separado
por file en filePaths:
zip_file.write(file)
print(zipFileName+’ ¡el archivo se ha creado con éxito!’)
# Llama a la función main
if __name__ == “__main__”:
main()
Ejecuta el script
test se da como nombre de directorio en el argumento de la línea de comandos. El tamaño de la prueba es de 21 bytes y después de la compresión, el tamaño de test.zip es de 2 bytes.
Espero que, este tutorial le ayudará a utilizar python para comprimir cualquier archivo o directorio.