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

新手上路,请多包涵

不确定我做错了什么,我正在学习如何使用 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

原文由 Jacob Day 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 616
2 个回答

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

 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)

对所有其他文件使用这种访问方法,您将避免一大堆问题。

原文由 underscoreC 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 Gman Cornflake 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题