Python错误:无法打开.png文件

2024-04-19 10:43:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定我做错了什么,我正在遵循一个关于如何使用Python和PyGame制作游戏的教程,我发现了错误:

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

我的代码如下:

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)

完整的错误消息是:

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 <module>
    player = pygame.image.load("resources/images/dude.png")
pygame.error: Couldn't open resources/images/dude.png

Tags: noconfigpnglibconferrorpygamefile
3条回答

Python在程序所在的文件夹中查找文件。你写的代码说,在你的程序所在的同一个文件夹中,有一个名为resources的文件夹,其中有一个名为images的文件夹。如果是这样,我帮不了你,但如果不是这样,请使用完整的文件位置

要使其在没有相对路径的情况下工作,需要将创建的.py文件放在pygame文件夹中。资源文件夹也应该在那里

改为使用相对路径(这样做总是更好):

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

通过这样做,无论您将包含.py文件的文件夹移动到何处,都可以访问其子目录(以及它们包含的任何内容),而无需修改代码


最终代码:

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)

对所有其他文件使用这种访问方法,可以避免一系列问题

相关问题 更多 >