Estadísticas del código: Clase para buscar una carpeta o un archivo y mostrar el contenido - Python

Imágen de perfil
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Clase para buscar una carpeta o un archivo y mostrar el contenido


Python

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 15 de Mayo del 2017 por Kip (28 códigos)
24.617 visualizaciones desde el 15 de Mayo del 2017
Una clase que busca una carpeta o un archivo en el directorio dado, por defecto busca en el directorio raiz /.

Ejemplo:

Instanciamos el objeto enviandole como parametros el tipo de busqueda a realizar y el directorio


1
finder = Finder('folder', '/')


Para hacer una busqueda insensible a mayusculas y minusculas, enviar como tercer parametro al momento de instanciar la clase un True:


1
finder = Finder('folder', './', True)

O simplemente luego de hacer la instancia acceder a a propiedad caseIns y darle el valor de True:

1
finder.caseIns = True

Luego llamamos al metodo find() enviandole la carpeta a buscar y luego llamamos al metodo showAll() para mostrar las coincidencias encontradas

1
finder.find('carpeta').showAll()

Puede usarse una expresion regular como parametro al metodo de busqueda, recordar que se debe enviar un True como segundo parametro para que la busqueda con la expresion funcione

1
finder.find('^carpeta$', True).showAll()

Si la busqueda esta tardando mucho, es posible cancelarla y dejar que muestre los resultados encontrados hasta el momento, CTRL + C y detendras la busqueda.

El metodo showAll() mostrara un listado de todas las coincidencias con un numero para luego poder seleccionar alguna entre ellas y mostrar su contenido.

Para mostrarlo podria hacerse asi, usando el metodo show():

1
2
op = input("Eliga una opcion de la lista anterior para mostrar el contenido: ")
finder.show(op)

Se envia como parametro el numero ingresado, luego mostrara el contenido de la carpeta selecionada o del archivo.

Al final la consola mostraria algo asi luego de ejecutar todo el codigo anterior:

1
2
3
4
5
6
7
8
9
10
11
Buscando........
Coincidencias: 1
[0] - './txt'
Eliga una opcion de la lista anterior para mostrar el contenido: 0
 
-> 3 archivos en el directorio seleccionado './txt'
-> Mostrando el contenido:
 
a.txt
b.txt
nuevo.txt

Para verificar que se encontraron coincidencias y asi poder pedir algun numero correspondiente a alguna de estas, se debe acceder a la propiedad matches y verificar el tamaño de esta:

1
2
if (len(finder.matches) > 1):
    #PIDO EL NUMERO DE ALGUNA COINCIDENCIA

La clase es sencilla, usa la palara reservada para retornar un generador y asi aligerar un poco la busqueda al momento de iterar los directorios.

https://wiki.python.org/moin/Generators

Aqui dejo el codigo de ejemplo de uso:

Busqueda de una carpeta

1
2
3
4
5
finder = Finder('folder', './', True)
finder.find('carpeta').showAll()
if (len(finder.matches) > 1):
    op = input("Eliga una opcion de la lista anterior para mostrar el contenido: ")
    finder.show(op)

Busqueda de un archivo

1
2
3
4
5
finder = Finder('file', './', True)
finder.find('archivo.txt').showAll()
if (len(finder.matches) > 1):
    op = input("Eliga una opcion de la lista anterior para mostrar el contenido del archivo: ")
    finder.show(op)

153 visualizaciones durante los últimos 90 días


11
0