Hace tiempo que me viene rondando la cabeza meterme con Python para hacer pequeños scripts en Linux, normalmente uso bash, quizás lo que quiero se puede hacer con él, con un poco más de trabajo.
Yendo al grano, quiero renombrar una serie de ficheros en varios directorios, no tienen todos el mismo patrón de nombres, algunas cosas, como eliminar textos o cambiarlos por otros se pueden hacer perfectamente con un renombrador de ficheros manualmente, como Bulky que viene con Linux Mint, pero no quiero repetir lo mismo en uno y otro directorio y además me llevaría más tiempo, también podría hacerlo perfectamente en bash con expresiones regulares.
La primera en la frente, hago pruebas desde el entorno de python3, pero en el script se me olvida poner la línea #!/usr/bin/python3, que sí tenía en uno de prueba, la segunda es que escribo path en vez de Path en from pathlib import Path y no, no le gusta a Python, es cuestión de acostumbrarse.
Normalmente veo el manual o la lista de comandos y forma de funcionamiento en la página oficial, me leo lo básico, sintaxis, variables y voy buscando los comandos que me hacen falta, he mirado en la página oficial y en w3schools básicamente, además de buscar en páginas diversas, quizás no es la mejor forma de aprender, pero para lo que quiero me llega.
Para listar directorios he visto que hay unas cuantas opciones, listdir, pathlib con path y scandir, al final opté por pahlib, me pareció la manera más sencilla, así que de momento ha quedado:
#!/usr/bin/python3
from pathlib import Path
import re
# Especifica el directorio que deseas leer
directorio = Path('/ruta/al/directorio')
# Listar todos los ficheros en el directorio
ficheros = [f for f in directorio.iterdir() if f.is_file() and f.name.endswith(".foo")]
for fichero in ficheros:
# Limpia el nombre del fichero, quita las cadenas
CR = re.compile("foo1|foo2|\foo3", re.IGNORECASE)
NuevoFichero = CR.sub("", fichero.name)
# Las cambia
CR = re.compile("foo4|foo5", re.IGNORECASE)
NuevoFichero = CR.sub(", ", NuevoFichero)
#Cambia los puntos de la fecha por guiones
NuevoFichero = NuevoFichero.replace(".","-",2)
#Cambia el punto detrás de la fecha por un guión con espacios a la izquierda y derecha
NuevoFichero = NuevoFichero.replace("."," - ",1)
#Cambia el resto de puntos por espacios
NuevoFichero = NuevoFichero.replace("."," ")
#Cambia iniciales a mayusculas
NuevoFichero = NuevoFichero.title()
print(NuevoFichero)
En la comprobación ha ido bien, ahora sólo me falta el renombrado.
Este directorio ha sido sencillo, hay otros con más complicaciones, quizás tenga que separar las diferentes partes del fichero para interactuar con cada una de ellas para después unirlas en el orden adecuado.
No he visto ningún hilo oficial o general sobre python, salvo que esté camuflado en algún hilo con nombre raro, no estaría de más con consejos, manuales a los que acudir, páginas de referencia, ...