pygame.erreur: impossible d'ouvrir l'image
Je suis en train d'apprendre python en utilisant ce site web: http://programarcadegames.com/index.php?lang=en&chapitre=bitmapped_graphics_and_sound
Je suis en train de charger une image comme ceci:
background_image = pygame.image.load("background.jpg").convert()
J'ai trouvé plusieurs autres posent la même question, et toutes les réponses sont révélatrices à l'affiche de s'assurer que l'image est dans le même dossier que le .py fichier. Eh bien, il est. Je l'ai vérifié.
J'ai aussi essayé de le mettre dans un sous-dossier nommé "images" et en utilisant ce.
background_image = pygame.image.load(os.path.join("images","background.jpg")).convert()
Dans les deux cas, j'obtiens le message d'erreur suivant.
pygame.error: Couldn't open saturn_family1.jpg
or
pygame.error: Couldn't open images\saturn_family1.jpg
Lors de l'utilisation de la aboslute chemin, il fonctionne. Mais ne devrais-je pas être en mesure d'utiliser un chemin relatif de ce genre?
Aussi, cela se produit lorsque vous utilisez le "script" package à exécuter dans l'Atome. Mais lors de l'exécution du fichier python, il fonctionne.
Je suis très frustré, cela ne semble avoir aucun sens! Ce qui se passe?
EDIT: message d'erreur Complet
C:\Users\Manu\Dropbox\Python\ProgramArcadeGames
Traceback (most recent call last):
File "C:\Users\Manu\Dropbox\Python\ProgramArcadeGames\Ch11_graphicsAndSound.py", line 26, in <module>
background_image = pygame.image.load(os.path.join("images","saturn_family1.jpg")).convert()
pygame.error: Couldn't open images\saturn_family1.jpg
[Finished in 0.815s]
Ajouté des images de mon répertoire:
Mise à JOUR:
J'ai couru exactement le même code dans le sublime et il a bien fonctionné. Je suis en supposant que c'est un problème avec l'Atome, donc je vais juste utiliser Sublime à partir de maintenant. Merci à tous ceux qui ont essayé de l'aider!
- Êtes-vous sûr que l'extension est
.jpg
ou autre chose? - Oui, il est .jpg
- Essayez d'ajouter
print(os.getcwd())
juste avant de charger le fichier. C'est juste une folie assurez-vous que le répertoire de travail courant est ce que vous pensez qu'elle est. - Ajouter une capture d'écran de votre répertoire de projet.
- J'ai ajouté le message d'erreur complet à mon post original. @saulspatz Comme vous pouvez le voir,
print(os.getcwd())
meC:\Users\Manu\Dropbox\Python\ProgramArcadeGames
alors que mon .py fichier est dans leC:\Users\Manu\Dropbox\Python\ProgramArcadeGames\Ch11
. Pourquoi est-ce? - Juste deviner: Avez-vous vérifiez lettres majuscules? Il y a peut être une différence entre MyFamily.jpg et myfamily.jpg sur la plattform l'exécution de votre code
- Faites-vous
os.chdir(..)
n'importe où dans votre fichier? Ne vous appelez une fonction qui pourrait le faire? - Non, je ne le crois pas.
- Oui, j'ai littéralement copié/collé le nom de fichier juste pour s'assurer.
- J'ai ajouté les captures d'écran comme demandé.
Vous devez vous connecter pour publier un commentaire.
De placer le fichier dans le même répertoire que votre programme en python fonctionnera à condition que le est le répertoire de travail courant. Puisque nous savons que ce n'est pas le cas, vous êtes en quelque sorte de changer le répertoire de travail alors que le script est en cours d'exécution, ou si vous commencez dans un autre répertoire. Vous pouvez le faire sur la ligne de commande avec
mais je ne pense pas que vous êtes en train de faire cela. Vous dites quelque chose à propos de l'exécution du script en vertu de l'Atome, ce qui explique peut-être cela. Je n'ai pas d'expérience avec ce, donc je ne peux pas dire désinvolte. S'il vous plaît mettre
que la première ligne de votre programme. Alors vous saurez où vous vous trouvez, et si le répertoire courant est en train de changer. Si ce n'est pas de changer, essayez d'exécuter le script en vertu de l'Atome et de la ligne de commande pour voir si vous obtenez des résultats différents. Nous ne serons pas en mesure de résoudre le problème jusqu'à ce que nous savons exactement ce qui se passe.
C:\Users\Manu\Dropbox\Python\ProgramArcadeGames\Ch11\test.py
Le fichier ne contient que deux lignes:import os
etprint(os.getcwd())
Si je lance le script dans l'Atome, je reçoisC:\Users\Manu\Dropbox\Python\ProgramArcadeGames
Si je exécuter exactement le même script dans Sublime Text 2, j'obtiensC:\Users\Manu\Dropbox\Python\ProgramArcadeGames\Ch11
qui est le chemin d'accès correct. Ce qui se passe ici??Même erreur qui s'est passé quand j'étais codage avec VS.
Je l'ai résolu en changeant le chemin d'accès de l'image (utilisez un chemin d'accès absolu ici) .
Changement
pygame.image.load('/images/xxx')
àJe suis en utilisant le mac, mais il doit être le même sur d'autres OS.
Suffit d'utiliser la absolue chemin de l'image.
Par exemple: