Pyglet 使用绝对路径加载资源
我刚接触Python,对这个问题还不太熟悉。我查了一些资料,但找到的答案似乎都不管用。我想用pyglet加载一个mp3文件,使用的是绝对路径,但出现了这个错误:
Traceback (most recent call last):
File "C:\Apps\Python\lib\site-packages\pyglet\resource.py", line 624, in media
location = self._index[name]
KeyError: 'C:/Users/Ruurd/Google Drive/Script/Python/music2.mp3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Users/Ruurd/Desktop/playmus.py", line 3, in <module>
music=pyglet.resource.media(path)
File "C:\Apps\Python\lib\site-packages\pyglet\resource.py", line 634, in media
raise ResourceNotFoundException(name)
pyglet.resource.ResourceNotFoundException: Resource "C:/Users/Ruurd/Google Drive/Script/Python/music2.mp3" was not found on the path. Ensure that the filename has the correct captialisation.
当我用'music2.mp3'作为路径时,一切正常。这里是那段不工作的代码:
import pyglet
path='C:/Users/Ruurd/Google Drive/Script/Python/music2.mp3'
music=pyglet.resource.media(path)
music.play()
2 个回答
0
import pyglet
from os.path import abspath, isfile
pyglet.options['audio'] = ('directsound', 'alsa', 'openal', 'silent')
path = abspath('C:/Users/Ruurd/Google Drive/Script/Python/music2.mp3')
if isfile(path):
music = pyglet.resource.media(path)
music.play()
因为你没有提供mp3文件的来源,我无法测试这个。
不过,通常来说,使用 abspath
是个好主意,这样可以确保语法是正确的;而使用 isfile
可以检查这个路径下的文件是否存在。
如果你想更好地控制使用的驱动程序,可以用 pyglet.options['audio']
来指示 pyglet 使用,比如说 directsound
。
3
试试这个:
music=pyglet.media.load(path)
而不是这个:
music=pyglet.resource.media(path)
对我有效哦。=)