Gracias pablo. Me inspiraste. El resultado quedó asi import os,fnmatch
class libro: def __init__(self, nombre): self.nombre=nombre os.chdir(r'D:\Django\src\static\imagenes') self.foto=0 for f in os.listdir(): if fnmatch.fnmatch(f,'*'+self.nombre+'*.jpg'): self.foto=f Saludos, Gonzalo El 20 de noviembre de 2016, 21:58, Pablo Ruiz Múzquiz <diacrit...@elenya.net > escribió: > Hola, > > Me temo que tu código no está haciendo lo que crees. Las expresiones con > == evaluán la expresión, no asignan valores a variables. Te propongo el > siguiente código basado en el tuyo. > > import os,fnmatch > > class libro: > > def __init__(self, nombre): > self.nombre=nombre > > def buscar(self): > self.foto = False > os.chdir(r'D:\Django\src\static\imagenes') > for f in os.listdir(): > if fnmatch.fnmatch(f,'*'+self.nombre+'*.jpg'): > self.foto = f > return self.foto > > return self.foto > > Si encuentra la coincidencia, asigna el valor y sale del bucle con el > return inmediatamente. En todos los otros casos, devuelve el valor por > defecto que es False. De todas formas, crear un atributo de clase de esta > forma es un poco "meh!" ¿no? Si vas a usar ese atributo más adelante, por > qué no lo creas en el __init__ y lo asignas a False ahí? Y si no vas a > hacerlo, por qué crear un self.foto y no simplemente una variable que > llames "foto"? > Bueno, en cualquier caso el problema era que estabas retornado True o > False al estar evaluando una comparación con el ==, en lugar de asignar un > valor y luego retornarlo. > > Pablo > > 2016-11-21 0:42 GMT+01:00 Gonzalo V <gvm2...@gmail.com>: > >> Amigos >> Tengo la siguiente duda. Estoy haciendo una clase para un objeto libro y >> tiene 2 atributos, el primero es el nombre y el segundo una foto que está >> almacenada en una carpeta en mi ordenador. >> Lo que ando buscando es que ese segundo atributo (libro.foto) se llene >> mediante una función que haga el trabajo de buscar el archivo y asignarlo. >> Tengo lista la función pero no asigna. >> ¿Cómo se hace, se puede hacer o qué estoy haciendo mal? >> Desde ya, muy agradecido. >> >> import os,fnmatch >> >> class libro: >> >> def __init__(self, nombre): >> self.nombre=nombre >> >> def buscar(self): >> os.chdir(r'D:\Django\src\static\imagenes') >> for f in os.listdir(): >> if fnmatch.fnmatch(f,'*'+self.nombre+'*.jpg'): >> return self.foto==f >> else: >> return self.foto==False >> >> >> >> >> >> Saludos, >> Gonzalo >> >> _______________________________________________ >> Python-es mailing list >> Python-es@python.org >> https://mail.python.org/mailman/listinfo/python-es >> >> > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es