Anuncios


En esta nueva entrega de la serie ‘Automatizando tareas en Python’ les enseñare a como organizar los archivos de su computadora usando el lenguaje de programación Python, de modo que podrá copias, mover, eliminar y comprimir sus archivos de manera automática con pocas lineas de codigo.

Ademas te enseñare a como obtener espacio libre en tu computadora usando código en Python para automatizar taras de compresión y eliminación de datos.


El modulo “shutil” contiene las funciones que nos permite copiar, mover, renombrar y eliminar archivo en los programas de python.

Para usar estas funciones, debes importar el modulo correspondiente.

import shutil

Copiando archivos y carpetas.

Para copiar un archivo, usando el modulo shutil, debemos acceder al método ‘copy’ el cual recibe como parámetros dos valores (origen, destino), de esta manera podemos copiar un archivo de una carpeta a otra indicando la ruta del archivo como origen y la ruta final como destino.

import shutil, os
os.chdir('C:\\')
shutil.copy('C:\\spam.txt', 'C:\\delicious')
shutil.copy('eggs.txt', 'C:\\delicious\\eggs2.txt')

En este ejemplo nos dirigimos a la carpeta raíz, donde el archivo llamado spam.txt se copia a la carpeta ‘delicius’.

Del mismo modo podemos cambiar el nombre de un archivo al momento de copiarlo, esto en la siguiente linea, donde ‘eggs.txt’ se copia a ‘delicius’ pero se renombra a ‘eggs2.txt’.

Ahora bien, si queremos copiar una carpeta entera, también contamos con métodos para realizarlo. Para copiar una carpeta completa, usamos el método ‘copytree’, el cual recibe los mismos parámetros, un origen y un destino, como ejemplo:

import shutil, os
os.chdir('C:\\')
shutil.copytree('C:\\bacon', 'C:\\bacon_backup')

Donde el contenido de ‘bacon‘ se copiara a la carpeta ‘bacon_backup‘, sencillo, ¿verdad?.

Mover archivos.

Mover archivos aveces resulta necesario en ciertos programas que realizamos en python. Usando el modulo ‘shutil‘ podemos realizar esto con pocas lineas de código, del mismo modo que cuando copiamos archivos.

Ejemplo:

import shutil
shutil.move('C:\\bacon.txt', 'C:\\eggs')

Aqui movemos el archivo ‘bacon.txt’ a la carpeta ‘eggs’.

Del mismo modo podemos renombrar los archivos al moverlos.

shutil.move('C:\\bacon.txt', 'C:\\eggs\\new_bacon.txt')

Borrando archivos y carpetas de manera permanente

Imagina un escenario: tienes una carpeta de descargas, toda desordenada, donde has descargado desde películas, canciones, libros hasta imágenes. Llega un punto en el que necesitas liberar espacio por lo que decides eliminar las películas, pero tienes tantos archivos que es complicado localizarlos en tu gran carpeta de descargas.

Ahora, usando python podemos automatizar esta tarea de eliminacion de archivos, veamos un poco mas.

Podemos borrar archivos usando el modulo os y el modulo shutil, con sus métodos correspondientes:

  • os.unlink(path) Para borrar un archivo.
  • os.rmdir(path) Para borrar una carpeta que puede estar vacía o contener otras carpetas y archivos.
  • shutil.rmtree(path) Para eliminar una carpeta con todo su contenido

Volviendo al ejemplo de las películas, podemos eliminar todas las peliculas de tu carpeta de descargas de una manera rápida con este código:

Anuncios
import os
carpeta = 'c:\\descargas'
for filename in os.listdir(carpeta):
    if filename.endswith('.mp4'):
        print("eliminando: " + str(filename))
        os.unlink(filename)

En este código lo primero que hacemos es importar el modulo os, segundo definimos una variable que contenga la ubicación de la carpeta que queremos analizar. Una vez teniendo la ubicación recorremos todos sus archivos que contiene la ruta de la carpeta, y si el nombre del archivo termina con un ‘.mp4’ que corresponde a películas lo procedemos a eliminar pasandole al método ‘unlink’ la ruta del archivo.

Y de este modo con pocas lineas de código podemos automatizar la eliminación de archivos en python.

Comprimir archivos con el modulo zipfile


En ciertas situaciones es necesario reducir el espacio que tenemos. Usando de nuevo el ejemplo de la carpeta de descargas, imagina que en lugar de tener que borrar algunos archivos pudieras comprimirlos de manera automática para liberar espacio.

Para crear tus propios archivos ZIP, debes abrir un objeto de tipo ZipFile.
Usando el método ‘write‘, podrás pasar los archivos a este objeto para que puedan ser comprimidos.

primero debes importar el modulo llamado ‘zipfile’

import zipfile

y creamos el objeto para pasarle los archivos a comprimir, con el valor de compresión como parámetro.

import zipfile
newZip = zipfile.ZipFile('new.zip', 'w')
newZip.write('spam.txt', compress_type=zipfile.ZIP_DEFLATED)
newZip.close()

De este modo habrás creado un archivo ‘new.zip’ que contiene en su interior ‘spam.txt’.

Para automatizar mas las cosas, recuerda el ejemplo de eliminar archivos con extensión ‘.mp4’, pero en este caso en lugar de eliminarlos podrias añadirlos al archivo comprimido con el método write.

Igual de sencillo, te lo dejo de tarea.

Leer archivos zip


Si queremos leer el interior de un archivo zip para verificar su contenido, pero sin tener que extraer sus datos, podemos usar algunos de los métodos del modulo zipfile.

import zipfile, os
os.chdir('C:\\')

exampleZip = zipfile.ZipFile('example.zip')
exampleZip.namelist()

spamInfo = exampleZip.getinfo('spam.txt')
spamInfo.file_size
spamInfo.compress_size

exampleZip.close()

En este ejemplo, lo que se realiza es leer un archivo zip llamado example. Usando el método ‘namelist’ se puede obtener una lista de todos los archivos que contiene. Ademas podemos crear un nuevo objeto el cual puede obtener la información de alguno de los archivos que contiene, por ejemplo spaminfo contiene datos sobre el archivo ‘spam.txt’ que se encuentra en el archivo comprimido. Usando ‘file_size‘ y ‘compress_size‘ podemos conocer el peso del archivo original y su peso una vez comprimido.

Recuerda siempre cerrar el objeto.

Extraer archivos comprimidos


Para extraer los archivos de un archivo comprimido usaremos la función ‘extractall’, muy útil en estos casos.

import zipfile, os
os.chdir('C:\\')
exampleZip = zipfile.ZipFile('example.zip')
exampleZip.extractall()
exampleZip.close()

De momento esto seria todo, en un próximo tutorial les enseñare a como implementar todo lo visto en esta publicación para realizar backups de manera automática en tu computadora usando Python.

Recuerda seguir la serie de ‘automatizando tareas en Python’.


Esta entrada tiene 2 comentarios

  1. Argenis

    Hola me podrías ayudar e buscado como descargar archivos grandes desde la web usando python pero no encuentro y los que hay no son muy claro

    1. Héctor

      Que necesitas en si, solo automatiza y dale tiempo a la descarga o toma palabras claves en un ciclo para que cuando termine y contenga la palabra clave sepa que terminó la descarga exitosamente

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.