Renombrar Archivos es un pequeño proyecto que nace con la finalidad de renombrar las capturas de pantalla que hago de mis clases online, para luego incluirlas en los Readme (anotaciones) o notebooks de forma más estructurada y ordenada.
Nota: Sobre lo anterior las capturas de pantalla por defecto se guardan con fecha y hora en el sistema operativo, por tal motivo ya están ordenas por defecto.
No requiere el uso de ningún paquete externo de Python, por tal motivo, este script rename_files.py debe correr en Python 3.6 en adelante sin problemas.
No obstante si el shebang (#!) está generando inconvenientes, se puede crear un ambiente virtual de acuerdo al sistema operativo (OS) anfitrión (host)
Se crea el ambiente virtual en el directorio dónde se tiene el script desde la terminal
python3 -m venv .venvSe habilita
. .venv/bin/activatePara desabilitar el entorno virtual
deactivateSe crea el ambiente virtual en el directorio dónde se tiene el script desde el power shell por ejemplo primero C:\<TU-RUTA>\
py -m venv .venvpython -m venv .venvDependiendo de como esté definida la variable de entorno para python
py -m venv .venvSe habilita el entorno virtual
.\.venv\Scripts\Activate.ps1Para desabilitar el entorno virtual
deactivateNota: Es posible correr un entorno Linux en Windows, con alguna distribución open source. Ver el siguiente enlace para más detalle Instalación de Linux en Windows con WSL
Al lanzar el siguiente comando en la terminal (Si estás en Windows cambiarpython3 por py o python dependiendo de como esté definida la variable de entorno para python):
python3 rename_files.py --helpo también:
python3 rename_files.py -hSe verán los flags (opciones) que dispone el archivo rename_files.py como parámetros de entrada
usage: rename_files.py [-h] [-d DIRECTORY] [-s START_PREFIX] [-f END_PREFIX] [-e EXTENSION]
[-i INCLUDE] [--is_test IS_TEST]
Change Files name
optional arguments:
-h, --help show this help message and exit
-d DIRECTORY, --directory DIRECTORY
Directory File
-s START_PREFIX, --start_prefix START_PREFIX
Start Prefix File
-p END_PREFIX, --end_prefix END_PREFIX
End Prefix File
-e EXTENSION, --extension EXTENSION
Extension File
-i INCLUDE, --include INCLUDE
Word in File name
--is_test IS_TEST Is test mode-
--directory: o también-deste por defecto toma el directorio actual./Para apuntar al directorio destino se incluye la ruta relativa desde donde se ejecuta el script
rename_files.py -
--start_prefix: o también-seste prefijo clasifica la imagen quizás por capítulos y empieza por defecto en01y esta es igual para todas las imágenes que se encuentran en la ruta objetivo. Por tal motivo, puede ser ajustada a lo que se necesita. -
--end_prefix: o también-peste sufijo tiene como finalidad definir de que van tratan el conjunt de images, puede ser opcional si en el punto 2 incluyo esa definición. -
--extension: o también-ees para indicar que extensión de archivos se va ha renombrar por defecto es.pngnótese que siempre empieza con.caso contrario arrojará un excepciónraise Exception("Extensions must start with dot")que dice"Las extensiones deben empezar con punto" -
--include: o también-ies opcional y tiene por finalidad filtrar los archivos que contengan cierta palabra y sobre estos se realice el renombramiento respectivo. Por defecto es unstringvacio. -
--is_test: este parámetro permite ver cuando esTruecomo quedarían el nombramiento de archivos sin cambiarlos. Por defecto esFalse, es decir que al omitirlo si renombra los archivos. Nótese que el boleano puede ir todo en minúsculas en la línea de comandos.
Nota: Entre el punto 2 y 3 existe un parámetro
idxdentro de la funciónchange_nameque lleva el conteo de los archivos y se los asigna de forma automática a los nombres de los mismos para diferenciarlos.
Todos los ejemplos se presentan a modo de prueba --is_test true
-
Renombrar todos los archivos en
./src/original/con el sufijo (-p) laminipython3 rename_files.py -d ./src/original/ -p lamini -e .jpg --is_test trueSe obtiene lo siguiente:
# Archivo Orginal >> Archivo Renombrado llama-g8e2017c1e_640.jpg >> 01_01_lamini.jpg llama-g6f862433a_640.jpg >> 01_02_lamini.jpg alpaca-gaa9f35dc2_640.jpg >> 01_03_lamini.jpg
-
Renombrar todos los archivos en
./src/original/pero que tenga el prefijo delaminipython3 rename_files.py -d ./src/original/ -s lamini -e .jpg --is_test trueSe obtiene lo siguiente:
# Archivo Orginal >> Archivo Renombrado llama-g8e2017c1e_640.jpg >> lamini_01.jpg llama-g6f862433a_640.jpg >> lamini_02.jpg alpaca-gaa9f35dc2_640.jpg >> lamini_03.jpg
-
Renombrar todos los archivos en
./src/original/pero con el sufijo delaminiy sin prefijopython3 rename_files.py -d ./src/original/ -s "" -p lamini -e .jpg --is_test true
Se obtiene lo siguiente:
# Archivo Orginal >> Archivo Renombrado llama-g8e2017c1e_640.jpg >> 01_lamini.jpg llama-g6f862433a_640.jpg >> 02_lamini.jpg alpaca-gaa9f35dc2_640.jpg >> 03_lamini.jpg
-
Renombrar todos los archivos en
./src/original/que seanalpacay con el prefijolaminipython3 rename_files.py -d ./src/original/ -s lamini -i alpaca -e .jpg --is_test trueSe obtiene lo siguiente:
# Archivo Orginal >> Archivo Renombrado alpaca-gaa9f35dc2_640.jpg >> lamini_01.jpg
-
Renombrar todos los archivos en
./src/original/que seanalpacapero con el sufijo (-p) delaminiy sin prefijo (-s)python3 rename_files.py -d ./src/original/ -s "" -p lamini -i alpaca -e .jpg --is_test true
Se obtiene lo siguiente:
# Archivo Orginal >> Archivo Renombrado alpaca-gaa9f35dc2_640.jpg >> 01_lamini.jpg
Nota: para que el renombramiento haga efecto remover
--is_test true, Si estas en Windows cambiarpython3porpyopython. Si empleas un entorno virtual puedes usarpythontambién.
Tomadas de pixabay
Sobre el script, al ser pequeño, busqué no añadirle dependencias u otras capas de complejidad. Por tal motivo, no he efectuado test unitarios (pytest), ni he aplicado pylint o similares. Esto último para verificar que el código cumple con el PEP 8.
Fue generado en gitignore.io con los filtros python, macos, windows y consumido mediante su API como archivo crudo desde la terminal:
curl -L https://www.toptal.com/developers/gitignore/api/python,macos,windows > .gitignore- Hubert Ronald - Trabajo Inicial - HubertRonald
Ve también la lista de contribuyentes que participaron en este proyecto.
Este proyecto está bajo licencia MIT - ver la LICENCIA archivo (en inglés) para más detalle.


