2017-02-20 8 views
2

nicht sicher, was ich falsch gemacht habe, verfolge ich eine Anleitung, wie man ein Spiel mit Python und PyGame zu machen und ich bekomme die Fehlermeldung:Python - Fehler: konnte nicht .png-Datei öffnen

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

Mein Code ist wie folgt:

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) 

die vollständige Fehlermeldung lautet:

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 
+0

funktioniert player = pygame.image.load (os.path.join (".", "Resources/images/dude.png")) funktioniert? – user2682863

Antwort

2

Verwenden Sie relative Pfade statt (es ist immer besser, dies zu tun):

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 

Auf diese Weise, egal wo Sie den Ordner mit Ihren .py Datei zu verschieben, dessen Unterverzeichnissen (und damit, was sie enthalten) Sie können immer noch darauf zugreifen, ohne dass Sie Ihren Code ändern müssen.


Schlusscode:

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) 

Verwenden Sie diese Zugriffsverfahren für alle anderen Dateien, und Sie werden eine Reihe von Problemen zu vermeiden.

+0

Das funktioniert gut! –

-1

Python für die Dateien im selben Ordner sieht in dem das Programm. Dieser Code, den Sie geschrieben haben, besagt, dass es im selben Ordner, in dem Sie Ihr Programm haben, einen Ordner namens resources gibt, und darin befindet sich ein Ordner namens images. Wenn das der Fall ist, kann ich Ihnen nicht helfen, aber wenn ist nicht, dann verwenden Sie den vollständigen Speicherort der Datei.

+0

Ich bin mir nicht sicher, ob Sie über Windows sprachen, aber unter Linux sucht Python nach Dateien, die in dem Ordner geöffnet werden, in dem Sie das Programm ausführen. Der Pfad sollte relativ zu dem Ordner sein, in dem Sie das Programm starten, es sei denn, es handelt sich um einen absoluten Pfad. – Shiping

+0

Überprüfen Sie auch die Groß-/Kleinschreibung. Es klingt dumm, aber ich persönlich habe viel Zeit damit verbracht, mich zu wundern, warum es 'dude.png' nicht importiert, wenn die Datei eigentlich' Dude.png' heißt. – Synedraacus

-1

Fügen Sie stattdessen einen ./ zu Ihrem Pfad hinzu.

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

Jacob, du solltest das ausprobieren, es funktioniert vollkommen in Ordnung für mich :) – nipkip

Verwandte Themen