es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Imagen no se muestra con PIL

Estoy tratando de abrir la imagen desde este directorio pero no he podido. Me da el siguiente error:

FileNotFoundError                         Traceback (most recent call last)
<ipython-input-27-1840203b5591> in <module>
      4 
      5 file = path+'\\'+a
----> 6 Image.open(file).show()
      7 #files=os.listdir(path)
      8 #emoji=random.choice(files)
/usr/lib/python3/dist-packages/PIL/Image.py in open(fp, mode)
   2807 
   2808     if filename:
-> 2809         fp = builtins.open(filename, "rb")
   2810         exclusive_fp = True
   2811 
FileNotFoundError: [Errno 2] No such file or directory: '/home/laura/Desktop/TheLab/nft/Emojis/031-happy-2.png'

Este es mi código:

import os
from PIL import Image
import random
import numpy as np

path = r"/home/laa/Desktop/TheLab/nft/Emojis"
a = random.choice(os.listdir(path))
print(a)

file = path+'/'+a
Image.open(file).show()

No sé qué está pasando, cuando se imprime “a” muestra el nombre de la imagen con su extensión .png, pero luego no se muestra.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar con la ruta del archivo. El error indica que el archivo no se está encontrando en el directorio especificado.

    Al analizar el código, parece que estás usando el tipo incorrecto de separador de ruta. En lugar de usar una barra diagonal hacia adelante (/) o una barra diagonal hacia atrás (\), debes usar os.path.join() para crear la ruta.

    Aquí hay un código modificado que debería funcionar:

    import os
    from PIL import Image
    import random
    
    path = "/home/laa/Desktop/TheLab/nft/Emojis"
    a = random.choice(os.listdir(path))
    print(a)
    
    file = os.path.join(path, a)
    Image.open(file).show()
    

    Al utilizar os.path.join(), puedes evitar problemas con el separador de directorio utilizado por tu sistema operativo.

Comments are closed.