我正在使用这个网站学习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]
更新 我在sublime中运行完全相同的代码,它工作正常。我假设这是Atom的问题,所以我将从现在开始使用Sublime。感谢所有试图提供帮助的人!
答案 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 & DMCA Guidelines</div>
</a>
<a href="https://www.youtube.com/">
<div class="sandrhelp">Support & 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 & Settings</div>
</a>
</div>
<div class="seperator" style="clear:both;"></div>
</div>
</html>
更改为
pygame.image.load('/images/xxx')
我正在使用mac,但在其他操作系统上它应该是相同的。
答案 2 :(得分:0)
只需为图片使用绝对路径。 例如:
CMakeCache.txt