Este es uno de los capítulos del tutorial Reto Python. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.
Poco a poco vamos evolucionando con nuestros retos, y esto se va a poner muy, pero que muy interesante. Hasta el momento todas nuestras acciones han recaído sobre todos los archivos que se encuentran en un determinado directorio, sin embargo esto no siempre tiene por que ser así. En ocasiones, vas a querer que tu acción se realizo sobre determinados archivos del directorio o incluso que se realicen varias acciones consecutivas. Así, en este reto introducimos los filtros y acciones en el reto Python.
Como en el reto anterior, insistir en que estas acciones son un poco toscas en el sentido de que estamos haciendo operaciones muy básicas. Sin embargo, verás que en los futuros retos estas acciones van a ser totalmente personalizables, tal y como te adelanto en el capítulo de hoy.
Reto Python 7. Filtros y acciones
Las solución al reto 6
Puedes encontrar la solución a este reto, la que yo te propongo, en el repositorio de GitHub. Pero lo mas maravilloso y fantástico de este reto, es que no solo vas a poder encontrar mis soluciones, sino que además encontrarás las soluciones de unos cuantos valientes mas que han decidido participar en este reto aportando su código para que tu también puedas aprender de diferentes opciones y soluciones para resolver cada uno de estos retos que te planteo. Ten en cuenta, que la mía es una de las muchas soluciones que se pueden plantear, y hay fantásticas soluciones que son tan válidas o mas que las mías.
El séptimo de los retos. Filtros y acciones
En el reto 6, comenzaste a realizar acciones con los distintos archivos que se encontraban en cada uno de los archivos. El problema es que era de forma indiscriminada. Lo hacías con todos los archivos.
En este nuevo reto, tienes que aplicar filtros, de forma que las acciones solo se apliquen en aquellos archivos que cumplan con los filtros que indiques. En principio, serán filtros del tipo *.jpg
, por ejemplo. Es decir, filtros relativos a extensiones.
Así, siguiendo con el ejemplo del reto 6, tu archivo de configuración puede tener un aspecto similar al que te muestro a continuación,
[directorios]
[directorios.1]
in = "/home/lorenzo/ImágenesIn1"
out = "/home/lorenzo/ImágenesOut1"
actions = ["copy", "move"]
filter = "*.png"
[directorios.2]
in = "/home/lorenzo/ImágenesIn2"
out = "/home/lorenzo/ImágenesOut2"
actions = ["move"]
filter = "*.svg"
[directorios.3]
in = "/home/lorenzo/ImágenesIn3"
out = "/home/lorenzo/ImágenesOut3"
actions = ["copy", "none"]
filter = "*.txt"
No tiene por que tener tres entradas, directorios.1
, directorios.2
y directorios.3
. Puede o no tener ninguna o tener tantas como el usuario quiera. Por supuesto las acciones se pueden repetir.
El vídeo
En el siguiente vídeo encontrarás una explicación de una posible solución al reto 6. Y digo posible solución porque es mi solución, y no tiene porque ser la mejor solución ni la única, por supuesto.
Además encontrarás el enunciado para el reto 7. En este no he puesto la ejecución de mi propuesta para el reto 7, porque todavía no la tengo implementada, se me ha venido el tiempo encima.