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

Responder a