Cargando



Buscar por nombre archivos en el disco duro con Python

Veremos cómo recorrer recursivamente los archivos del disco a partir del directorio que le pasemos y mostrar los que coinciden con el nombre que buscamos.


jul 21 2016 10:24
Avanzado
jul 21 2016 12:18

En este tutorial vamos a ver cómo implementar un breve programa en Python que va a encargarse de buscar archivos que contienen un cierto nombre, dentro del directorio que le pasemos (si no le pasamos un directorio, buscara desde el directorio actual). Veremos que es un código muy sencillo de realizar y entender.

 

Nota
El ejemplo que voy a poner en este tutorial lo voy a ejecutar en Python 3.X.

 

De primeras dejo el código completo y debajo se explicará parte por parte:

import sys, os

buscar = "solvetic"
directorio = os.getcwd()
total = 0

if(len(sys.argv) > 1):
    if(not os.path.isdir(sys.argv[1])):
        print(sys.argv[1],"no se reconoce como directorio")
        sys.exit(1)
    directorio = sys.argv[1]

for root, dir, ficheros in os.walk(directorio):
    for fichero in ficheros:
        if(buscar in fichero.lower()):
            print(root+"\\"+fichero)
            total += 1
    
print("En total hay",total," archivos con",buscar)
Ahora vamos a empezar la explicación del código, si ya sabes algo de Python seguro que ya lo has entendido en su mayor parte.

 

Para llevar a cabo este programa vamos a utilizar el módulo os para interactuar con el sistema operativo, y el sys para controlar la entrada del argumento y posible salida sin brusquedad. Son módulos de los que ya disponemos en Python, así que no tenemos que instalar nada más.

import sys, os
A continuación vamos a definir una variable llamada buscar con la palabra que vamos a buscar (podíamos recibirla como parámetro, pero en este caso, para el ejemplo será solvetic), otra llamada directorio que contendrá la ruta de donde vamos a partir (por defecto el directorio actual desde donde ejecutamos el programa). Y la última variable que vemos total, es para llevar la cuenta de los archivos que vamos encontrando.
buscar = "solvetic"
directorio = os.getcwd()
total = 0
Vamos a comprobar ahora si hemos recibido algún parámetro y si es así comprobamos si nos han pasado un directorio, si es cierto, guardamos el directorio en la variable “directorio”, si no esa variable sigue igual, es decir con el directorio actual.
if(len(sys.argv) > 1):
    if(not os.path.isdir(sys.argv[1])):
        print(sys.argv[1],"no se reconoce como directorio")
        sys.exit(1)
    directorio = sys.argv[1]
El siguiente paso es un bucle, la función os.walk(directorio) leerá los nombres de los archivos recursivamente, es decir recorrerá los ficheros y directorios desde el directorio que le pasemos. Después lo único que nos interesa en este ejemplo es mostrar los archivos que contengan la palabra solvetic, por lo que recorreremos los ficheros y comprobaremos si tienen la palabra buscada, para encontrar también los archivos que contengan la palabra con alguna mayúscula usamos la función lower, que lo único que hace es dejar la cadena al completo en minúsculas. Como nos interesa ver la ruta completa del archivo concatenamos la variable root con el fichero, ya que root nos devuelve el directorio que hemos leído.
for root, dir, ficheros in os.walk(directorio):
    for fichero in ficheros:
        if(buscar in fichero.lower()):
            print(root+"\\"+fichero)
            total += 1
Justo antes de finalizar el programa pintara por pantalla una línea con la cantidad de ficheros encontrados con el nombre de solvetic.
print("En total hay",total," archivos con",buscar)
Ahora voy a poner unas capturas de la ejecución del programa, a continuación la ejecución sin parámetro, es decir va a hacer la búsqueda desde el directorio actual:

 

 

buscar_solvetic_1.jpg

 

La siguiente para que busque a partir del disco C en Windows:

 

buscar_solvetic_2.jpg

 

Y por último una captura cuando se le pasa como parámetro algo que no es un directorio:

 

no_directorio.jpg

 

Y ya se ha terminado el tutorial, si os interesa seguir investigando el modulo os, aquí dejo un enlace a la documentación oficial, está en inglés.


¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X