pygame.error:无法打开图片

时间:2015-09-20 20:53:42

标签: python windows pygame atom-editor

我正在使用这个网站学习python:http://programarcadegames.com/index.php?lang=en&chapter=bitmapped_graphics_and_sound

我正在尝试加载这样的图像:

background_image = pygame.image.load("background.jpg").convert()

我发现其他几个问同样的问题,所有答案都告诉海报确保图像与.py文件位于同一个文件夹中。嗯,确实如此。我仔细检查过。

我也尝试将它放入一个名为“图像”的子文件夹中。并使用它。

background_image = pygame.image.load(os.path.join("images","background.jpg")).convert()

在这两种情况下,我都会收到以下错误消息。

pygame.error: Couldn't open saturn_family1.jpg
or    
pygame.error: Couldn't open images\saturn_family1.jpg

使用aboslute路径时,它可以工作。但我不应该使用这样的相对路径吗?

此外,使用"脚本"要在Atom中执行的包。但是当执行实际的python文件时,它可以工作。

我非常沮丧,这似乎没有任何意义!发生了什么事?

编辑:完整的错误消息

C:\Users\Manu\Dropbox\Python\ProgramArcadeGames
Traceback (most recent call last):
  File "C:\Users\Manu\Dropbox\Python\ProgramArcadeGames\Ch11\11_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]

添加了我的目录图片: enter image description here

enter image description here

更新 我在sublime中运行完全相同的代码,它工作正常。我假设这是Atom的问题,所以我将从现在开始使用Sublime。感谢所有试图提供帮助的人!

3 个答案:

答案 0 :(得分:2)

将文件放在与python程序相同的目录中,只要它是当前工作目录。既然我们知道情况并非如此,要么是在脚本执行时以某种方式更改工作目录,要么是在其他目录中启动。您可以使用

在命令行上执行此操作
python ../myscript.py

但我不认为你这样做。你说一下在Atom下运行脚本,可以解释一下。我对此没有任何经验,所以我不能随便说。请把

print os.getcwd()

作为程序的第一行。然后你就会知道你在哪里开始以及当前目录是否在变化。如果它没有改变,请尝试在Atom和命令行下运行脚本,看看是否得到不同的结果。在我们确切知道发生了什么之前,我们将无法解决问题。

答案 1 :(得分:0)

当我使用VS编码时发生了同样的错误。 我通过改变图像的路径来修复它(在这里使用绝对路径)。

<html> <h1 class="helph1">GASR Help Center</h1> <div class="helpparent"> <div class="toplinks"> <a href="https://www.youtube.com/"> <div class="announcementhelp">Announcements</div> </a> <a href="https://www.youtube.com/"> <div class="gettingstartedhelp">Getting Started</div> </a> <a href="https://www.youtube.com/"> <div class="gasrhelp">GASR 101</div> </a> </div> <div class="seperator" style="clear:both;"></div> <div class="middlelinks"> <a href="https://www.youtube.com/"> <div class="forumshophelp">Forums and Shops</div> </a> <a href="https://www.youtube.com/"> <div class="rulesdmcahelp">Community &amp; DMCA Guidelines</div> </a> <a href="https://www.youtube.com/"> <div class="sandrhelp">Support &amp; Report System</div> </a> </div> <div class="seperator" style="clear:both;"></div> <div class="bottomlinks"> <a href="https://www.youtube.com/"> <div class="eventhelp">Forum Events</div> </a> <a href="https://www.youtube.com/"> <div class="storehelp">GASR Store</div> </a> <a href="https://www.youtube.com/"> <div class="profilehelp">Your Profile &amp; Settings</div> </a> </div> <div class="seperator" style="clear:both;"></div> </div> </html>更改为

pygame.image.load('/images/xxx')

我正在使用mac,但在其他操作系统上它应该是相同的。

答案 2 :(得分:0)

只需为图片使用绝对路径。 例如:

CMakeCache.txt