pyglet只能从同一个目录播放声音

问题描述:

所以我有这样的一段代码,这将播放声音,但如果它是在同一目录下它只能pyglet只能从同一个目录播放声音

# Doesnt work 
current_directory = os.getcwd() 
path = os.path.join(current_directory + "\sounds\\monster_roar.wav") 
music = pyglet.resource.media(path) 

# does work 
music = ("monster_roar.wav") 
#music.play() 

pyglet.resource.ResourceNotFoundException:资源“C :路径中找不到\ Users \ Joshua Nixon \ Documents \ college_work \ extended_project \ game \ new \ sounds \ monster_roar.wav。确保文件名具有正确的captialisation。

我在想什么?

在这种情况下,您应该考虑使用绝对路径代替相对路径。然而,您的错误可能可以固定如下:

而不是使用 music = pyglet.resource.media(path)

的...尝试使用music = pyglet.media.load(path)

+0

我爱你,工作。你能解释一下相对路径和绝对路径的区别吗?没有听过这些词 –

+0

当你使用'\ sounds \ monster_roar.wav'这样的相对路径时,你使用的任何函数都必须在某个点计算完整路径。这可能容易出错,尤其是在不同平台上运行程序时。 绝对路径应该是'C:\ Users \ Bob \ Game \ sounds \ monster_roar.wav'。你不会把它写成字符串,你可以使用os.path.abspath(“sounds \ monster_roar.wav”)来计算它,这会在不同的平台上产生不同的结果。 –

+0

我不会担心你的情况太多,但使用绝对路径基本上可以避免必须加入不同的路径(即减少出错的几率)。 –