Python – error: no se pudo abrir el archivo .png

No estoy seguro de lo que hice mal, estoy siguiendo un tutorial sobre cómo hacer un juego con Python y PyGame y recibo el error:

pygame.error: Couldn't open resources/images/dude.png 

Mi código es el siguiente:

 import pygame from pygame.locals import * pygame.init() width, height = 640, 480 screen=pygame.display.set_mode((width,height)) player = pygame.image.load("resources/images/dude.png") while 1: screen.fill(0) screen.blit(player, (100,100)) pygame.display.flip() for event in pygame.event.get(): if event.type==pygame.QUIT: pygame.quit() exit(0) 

El mensaje de error completo es:

 ALSA lib confmisc.c:768:(parse_card) cannot find card '0' ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:4771:(snd_config_expand) Evaluate error: No such file or directory ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default Traceback (most recent call last): File "/root/Documents/PyGame/game.py", line 9, in  player = pygame.image.load("resources/images/dude.png") pygame.error: Couldn't open resources/images/dude.png 

Utilice rutas relativas en su lugar (siempre es mejor hacerlo):

 import os current_path = os.path.dirname(__file__) # Where your .py file is located resource_path = os.path.join(current_path, 'resources') # The resource folder path image_path = os.path.join(resource_path, 'images') # The image folder path 

Al hacer esto, se puede acceder a cualquier lugar donde mueva la carpeta que contiene su archivo .py , sus subdirectorios (y, por lo tanto, lo que contengan) sin que tenga que modificar su código.


Código final:

 import pygame import os from pygame.locals import * pygame.init() width, height = 640, 480 screen = pygame.display.set_mode((width, height)) current_path = os.path.dirname(__file__) # Where your .py file is located resource_path = os.path.join(current_path, 'resources') # The resource folder path image_path = os.path.join(resource_path, 'images') # The image folder path player_image = pygame.image.load(os.path.join(image_path, 'dude.png')) while 1: screen.fill(0) screen.blit(player, (100,100)) pygame.display.flip() for event in pygame.event.get(): if event.type==pygame.QUIT: pygame.quit() exit(0) 

Utilice este método de acceso para todos sus otros archivos, y evitará muchos problemas.

Python busca los archivos en la misma carpeta en la que se encuentra el progtwig. Ese código que escribiste dice que en la misma carpeta que tienes tu progtwig, hay una carpeta llamada recursos, y en eso, hay una carpeta llamada imágenes. Si este es el caso, no puedo ayudarte, pero si no es, a continuación, utilice la ubicación del archivo completo.

Añade un ./ a tu camino en su lugar.

 player = pygame.image.load("./resources/images/dude.png")