Este es un pequeño script que hice para realizar una busqueda de archivos de forma recursiva, A pedido de un compañero
, Espero les sirva.
import osdef search(path,file_name): try: files = os.listdir(path) trunk = 0 except OSError: print “Access Denied: “ + path trunk = 1
if trunk 0: for f in files: bool = os.path.isdir(path + f) if bool True: search(path + f + ‘/’,file_name) else: if file_name == f: print ‘Found : ‘ + path + fif name == ‘main’: path = raw_input(“Directorio de búsqueda: “) file = raw_input(“Archivo a buscar: “) search(path,file)
Comments
Eso mismo hice yo.
Y lo llamé pygrep.
El caso es que le metí alguna cosa que otra más... Así como gtk.
PD: Brue, ya le he metido el gráfico y estás entre los agradecimientos
Miguel Ángel García
http://magmax.org
¿Y qué tal...
...usando la librería estándar? Más corto, sencillo y eficiente, y además ya está hecho
#!/usr/bin/python # -*- coding: utf-8 -*- import os path = raw_input("Directorio de búsqueda: ") fname = raw_input("Archivo a buscar: ") for root, dirs, files in os.walk(path): if fname in files: print "Found:", os.path.join(root, fname)Una curiosidad. Eso que haces de definir una variable "bool" (que por cierto es una palabra reservada) para luego hacer una comprobación lógica y además comparando con "True"... ¿qué lógica tiene? valga la redundancia. Lo veo muchísimo y nunca lo he entendido. ¿No es mejor y más simple?:
... if os.path.isdir(path + f): search(path + f + '/',file_name) else: ...No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.
De acuerdo
Claro David, estoy totalmente de acuerdo contigo, lo que tu dices sobre la libreria si lo conocia, pero si tu te fijas cuando digo "A pedido de un compañero", me refiero a que el esta empezando recien con el lenguaje y me pidio que lo hiciera de la manera mas simple posible y él luego iba ha ir evaluando el codigo y mejorarlo, cosa que tu has realizado y me parece muy bien.
, pero buena tu aclaracion.
con respecto a la palabra "bool", no se de donde saque eso
Gracias.
ok, entonces...
def search(path, fname): try: for i in os.listdir(path): full_name = os.path.join(path, i) if os.path.isdir(full_name): search(full_name, fname) elif i == fname: print "Found:", full_name except OSError, e: print eNo soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.