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 .venv
Se habilita
. .venv/bin/activate
Para desabilitar el entorno virtual
deactivate
Se 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 .venv
python -m venv .venv
Dependiendo de como esté definida la variable de entorno para python
py -m venv .venv
Se habilita el entorno virtual
.\.venv\Scripts\Activate.ps1
Para desabilitar el entorno virtual
deactivate
Nota: 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 --help
o también:
python3 rename_files.py -h
Se 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-d
este 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-s
este prefijo clasifica la imagen quizás por capítulos y empieza por defecto en01
y 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-p
este 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-e
es para indicar que extensión de archivos se va ha renombrar por defecto es.png
nó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-i
es opcional y tiene por finalidad filtrar los archivos que contengan cierta palabra y sobre estos se realice el renombramiento respectivo. Por defecto es unstring
vacio. -
--is_test
: este parámetro permite ver cuando esTrue
como 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
idx
dentro de la funciónchange_name
que 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 true
Se 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 delamini
python3 rename_files.py -d ./src/original/ -s lamini -e .jpg --is_test true
Se 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 delamini
y 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 seanalpaca
y con el prefijolamini
python3 rename_files.py -d ./src/original/ -s lamini -i alpaca -e .jpg --is_test true
Se obtiene lo siguiente:
# Archivo Orginal >> Archivo Renombrado alpaca-gaa9f35dc2_640.jpg >> lamini_01.jpg
-
Renombrar todos los archivos en
./src/original/
que seanalpaca
pero con el sufijo (-p
) delamini
y 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 cambiarpython3
porpy
opython
. Si empleas un entorno virtual puedes usarpython
tambié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.