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 <[email protected]
> 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 <[email protected]>:
>
>> 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
>> [email protected]
>> https://mail.python.org/mailman/listinfo/python-es
>>
>>
>
> _______________________________________________
> Python-es mailing list
> [email protected]
> https://mail.python.org/mailman/listinfo/python-es
>
>
_______________________________________________
Python-es mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-es