Cambia el nombre de archivos masivamente con Python

En varias ocasiones, tenemos que manejar muchos archivos, los cuales tenemos que realizar cambios en los nombres de dichos achivos. Pero el cambio de nombres no es sólo en 1, 2 o 3 archivos, sino en 40, 50, o muchos más.

En este tutorial, aprenderemos a usar un script en Python para cambiar el nombre de los archivos, o fracción de ellos, masivamente.

Este script en Python, tendrá una barra de progreso que nos indicará cómo va nuestro flujo de trabajo de cambiar los nombres de los archivos.

  • Abrimos nuestro editor de código favorito. En mi caso uso Visual Studio Code
  • Importemos las librerías que necesitamos:

import os

import time

import progressbar

Para importar progressbar, necesitamos instalar esta librería desde pip  (https://pypi.org/project/progressbar2/).

Si no tienes pip instalado en tu sistema, haz clic aquí para seguir el tutorial de instalar pip desde su página oficial.

  • Ahora crearemos nuestras variables globales que nos servirá para capturar los nombres de los archivos a los que le cambiaremos los nombres:

list_name = os.listdir()

list_name_lenght = len(list_name)

new_list = []

new_list_updated = []

Donde:

list_name: obtendremos la lista de todos los archivos donde se encuentra nuestro script.

list_name_lenght: obtendremos la longitud de cada uno de los archivos donde se encuentra nuestro script.

new_list = []: será un array vacío, donde almacenaremos la lista de los archivos

new_list_updated = []: será un array vacío, donde almacenaremos la lista de los archivos con los nombres cambiados.

  • Nuestro proyecto se basará en tres pasos. El primero, será para obtener la lista de los nombres de los archivos. El segundo, será para obtener la lista con los cambios en los nombres que queremos. El tercero, será el cambio de nombre de los archivos en el sistema. Para ello nos basaremos en crear tres funciones que harán cada uno de los pasos.

Paso 1: Obtener la lista de los nombres de los archivos.

A esta función le nombraremos _create_list(), lo que nos permite realizar, es capturar cada uno de los nombres de los archivos y almacenarlos en un array o arreglo, el cual es new_list:

def _create_list():

    global list_name_lenght, list_name, new_list

    print(‘Creando listas…’)

    for i in progressbar.progressbar(range(list_name_lenght)):

        if old_name in list_name[i]:

            new_list.append(list_name[i])

        time.sleep(0.02)

Paso 2: Obtener la lista con los nombres de los archivos cambiados.

En este paso, la función obtendrá una copia de la lista new_list, pero reemplazando el nombre o parte de él (el texto que queremos cambiar) y guardando dicha lista en un nuevo array o arreglo llamado new_list_updated.

def _create_list_updated():

    print(‘Creando nueva lista de cambio de nombre…’)

    global new_list, new_list_updated

    new_list_updated = [name.replace(old_name, new_name) for name in new_list]

Paso 3: Cambio de nombre de los archivos en el sistema.

En este paso, la función que creamos hará que los nombres sean reemplazados en el sistema, quiere decir, que ya veremos los cambios de nombres de los archivos de nuestro sistema, donde se encuentra nuestro script:

def _change_filename():

    print(‘Cambiando los nombres de los archivos…’)

    global new_list, new_list_updated

    for i in progressbar.progressbar(range(len(new_list))):

        os.rename(new_list[i], new_list_updated[i])

        time.sleep(0.02)

Lo que nos queda es configurar nuestro main para poder inicializar el script, en este caso, necesitamos dos datos: El texto que será reemplazado (old_name) y el texto que lo reemplazará (new_name).

if __name__ == ‘__main__’:

    old_name = input(‘Valor a Buscar: ‘)

    new_name = input(‘Reemplazarlo por: ‘)

    _create_list()

    _create_list_updated()

    _change_filename()

    print(‘**PROCESO TERMINADO**’)

Finalmente guardamos todo nuestro archivo con extensión .py y lo probamos. Lo probaremos con una lista de archivo que ya tenemos preparada. Lo que hacemos para que funcione (en Windows), son los siguientes pasos:

  1. Movemos o copiamos nuestro archivo changeName.py a nuestra carpeta de archivos.
  2. Doble clic sobre el script ChangeName.py. Aparecerá el terminal y nos pedirá la parte o total de texto que queremos reemplazar, escribimos y luego presionamos Enter.
  3. Nos pedirá el nuevo texto para cambiar el nombre del archivo, escribimos el valor que deseamos y presionamos Enter.
  4. ¡Listo!, ya tenemos todos los archivos que tenían el texto que buscábamos cambiados.

Si deseas descargar el script, puedes hacer clic aquí. (http://legeerook.com/1G9w)

Puedes ver el código completo en mi gitHub. (http://legeerook.com/1G3R)

Si tienes alguna duda sobre cómo usarlo o si deseas que realice un vídeo de este tutorial, , escríbelo en la sección de comentarios.

¡Recuerda compartir el conocimiento!

Publicado por

jmacalupur

Bach. en Ingeniería agrícola. Amante de las nuevas tecnologías. Estudiando actualmente en Platzi.

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *