Automatizando con Python, Idea 2: Automove files

Hola mundo y bienvenidos a este post,

Cuando estás aprendiendo a programar lo mejor que puedes hacer es buscar formas de practicar. Con ideas de proyectos o incluso intentando automatizar algunas tareas diarias que puedes tener. Es por esta razón que en este post te traigo la segunda de tres ideas que puedes automatizar en python. Aunque estas ideas, por supuesto que también las puedes automatizar en cualquier lenguaje.


Hoy tenemos un tutorial para automatizar con Python, puedes leer este post o ver y escuchar esta información en formato de video en nuestro canal de youtube en la que encontraras además de esta, dos ideas más para automatizar con python, te dejamos el link por si prefieres este formato. 😃 👍

Igualmente, te dejamos aquí el primero de estos tutoriales, el cual es un compresor de imágenes. Y el último, el cual es un job scrapper.

Descripción de nuestro proyecto «Automove files»

Este script tomará los archivos que se encuentren dentro de mi carpeta de archivos y los moverá a la carpeta que tenga más sentido, por ejemplo, las imágenes las moverá a la carpeta de fotos, los archivos de música, a la carpeta de… chanchitos felices. Y los archivos de video a la carpeta de videos.

Preparación

Primero crearemos una nueva carpeta donde guardaremos nuestro proyecto y dentro de esta carpeta crearemos un nuevo archivo, lo llamaremos mover.py y una segunda carpeta a la que llamaré archivos donde tendré dos carpetas más: una llamada pictures y la otra music. En mi carpeta archivos colocaré un par de archivos .mp3 y algunas imágenes para poder hacer el ejercicio

Esta estructura la podemos lograr con la secuencia de comandos para tener los archivos necesarios para trabajar con este script.

mkdir python_projects
 cd python_projects/
touch mover.py
 mkdir Pictures Music

Con esto tendriamos las carpetas y el archivo creado, tu puedes elegir la ruta donde crear a estos.

Comenzando el script

Ahora abriremos nuestro editor de código como lo es VsCode, pero tú puede utilizar el de tu preferencia para trabajar nuestro proyecto.

Dentro del archivo mover.py tenemos que importar al modulo os y el modulo PIL y de este último usaremos a Image, pero antes tendremos que instalarlo y lo haremos con el comando:

python3 -m pip install Pillow

Esto si estas usando comandos Unix.

Nuestras importaciones deberian quedar de la siguiente manera:

from PIL import Image

import os

Definiremos dos variables, la primera para que el script sepa la ruta de los archivos de la que se obtendrán las imágenes que vamos a optimizar y la segunda para guardar a las imágenes.

downloadsFolder = "./"
picturesFolder = "./Pictures/"

Ahora inicializamos nuestra aplicación con y todo nuestro script va dentro de este bloque de código:

if __name__ == "__main__":

Utilizaremos el módulo os para encontrar todas nuestras imágenes:

    for filename in os.listdir(downloadsFolder):
        name, extension = os.path.splitext(downloadsFolder + filename)

Donde os.listdir(downloadsFolder),nos va a dar como resultado una lista con los nombres de los archivos y carpetas, aquí solo te colocaré como se ven los archivos que tengo para probar este script:["asado.jpeg", 'cancion.mp3', 'cancion2.mp3', 'pozole.jpg'].

Despues con el siguiente método os.path.splitext(downloadsFolder + filename), vamos a definir las variables name y extensión que utilizaremos posteriormente, este método va a dividir la ruta del archivo y la extensión de este. Si lo imprimimos, obtendremos lo siguiente del primer archivo:

name sera: ./asado y la extensión sera:.jpeg

Con los siguientes es similar, solo que obtendremos su nombre y su extensión correspondiente.

Organizando nuestros archivos

Ahora aplicaremos condicionales, la primera para detectar si el archivo es una imagen dependiendo del valor de su extensión .jpg, .jpeg o .png. La segunda condicional es para detectar si el archivo es uno con extensión .mp3

      if extension in [".jpg", ".jpeg", ".png"]:
          picture = Image.open(downloadsFolder + filename)
          picture.save(picturesFolder + "compressed_"+filename, optimize=True, quality=60)
          os.remove(downloadsFolder + filename)

Si entra al primer bloque de código ejecutará un código que puede parecerte conocido, ya que hemos incluido el script para optimizar el tamaño de las imágenes, con la única diferencia que guardamos el archivo en la ruta para que llegue a la carpeta Pictures y borramos el archivo original con os.remove. El funcionamiento del optimizador te lo explicamos otro post, por si quieres saber cómo funciona este otro script, has click aqui para ver el post

Sobre la segunda hacer algo similar, si encuentra un archivo con extensión mp3, definimos la carpeta de destino que en este caso es Music, y después de eso “cambiamos” el nombre del archivo con os.rename(nombre del archivo, nuevo nombre) en que cambiando el nombre cambiamos también la ruta en la que se encuentra dicho archivo.

      if extension in [".mp3"]:
          musicFolder = "./Music/"
          os.rename(downloadsFolder + filename, musicFolder + filename)

¡Resultados!

Recordemos como tenemos nuestros archivos y carpetas:

Archivos antes de usar el script

Ahora es momento de poner a prueba nuestro script, lo haremos con el comando:

python3 mover.py

¡Y ha quedado listo!, los archivos pasaron de estar en la carpeta de esta manera:

Nuestra carpeta del proyecto ahora se vera asi:

Archivos y carpetas despues de usar el script

Pero…¿dónde quedaron los archivos?

Vamos primer a la carpeta Music:

Archivos de la carpeta Music

Y la siguiente la carpeta Pictures, en las que veras que las imagenes fueron optimizadas por nuestro script:

Archivos de la carpeta Pictures

Código y repositorio

Con esto está terminado nuestro script, te dejo el código completo del script así como él repositorio en GitHub donde puedes ver otros dos scripts con más ideas para automatizar con Python, si no sabes qué es o te falta profundizar en la tecnología Git para entender que es un repositorio y cómo tener los tuyos, te recomendamos el curso de Git: Sin Fronteras de la Academia de Hola Mundo.

from PIL import Image
import os

downloadsFolder = "./"
picturesFolder = "./Pictures/"

if __name__ == "__main__":
    for filename in os.listdir(downloadsFolder):

      print(filename)
      name, extension = os.path.splitext(downloadsFolder + filename)

      if extension in [".jpg", ".jpeg", ".png"]:
          picture = Image.open(downloadsFolder + filename)
          picture.save(picturesFolder + "compressed_"+filename, optimize=True, quality=60)
          os.remove(downloadsFolder + filename)

      if extension in [".mp3"]:
          musicFolder = "./Music/"
          os.rename(downloadsFolder + filename, musicFolder + filename)

Esta ha sido la segunda idea, ¿qué más se te ocurre que podemos hacer con Python?, déjanos tu opinión en los comentarios.

¿Cómo aprender python?

Puedes crear muchas más herramientas para automatizar tu dia a dia, pero lo primero es aprender las bases del lenguaje de programación, de nuevo te invitamos a tomar nuestro curso Python: HTML, CSS, Flask y MySQL, pero si prefieres otras tecnologías te dejamos el link de la Academia de Hola Mundo para ver todos los cursos que tenemos disponible en diferentes tecnologías para formarte en un excelente desarrollador o desarrolladora.

Para más contenido y no perderte nada suscríbete a este blog, e igualmente síguenos en todas las redes como youtube, twitter e Instagram, y por último, te invitamos a escuchar nuestra música «Hola Beats» diseñada para ayudarte a concentrarte y acompañarte en tu aprendizaje o trabajo, estamos en Spotify y en Apple Music.

¡Hasta la próxima!, y chao mundo

Responder a Ruta para ser desarrollador backend con Hola Mundo – Hola MundoCancelar respuesta

Press ESC to close

Descubre más desde Hola Mundo

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo