我正在使用的代码是这样:
import pygame
assert pygame.init()==(6,0)
pygame.mixer.init()
from pygame.locals import *
from time import sleep
import os
pygame.mixer.music.load('timer_end.mp3')
不幸的是,我收到此错误:
Traceback (most recent call last):
File "C:\Python37\Lib\timer.py", line 60, in <module>
pygame.mixer.music.load('timer_end.mp3')
pygame.error: Couldn't open 'timer_end.mp3'
我也查看了this question及其答案。不幸的是,它们没有帮助,因为.mp3
首先与我的Python脚本位于同一文件中。如何使PyGame音乐正常工作?
答案 0 :(得分:1)
不确定这是否是问题,因为在我看来您正在使用Windows,但是请检查pygame music docs。他们说:
请注意,对MP3的支持是有限的。在某些系统上,不支持的格式可能会使程序崩溃,例如Debian Linux。考虑改用OGG。
因此,请尝试将文件转换为其他格式,例如WAV或OGG。也许行得通。
您发布的错误是pygame在找不到文件时给出的错误。所以@Matt的评论也许是正确的。
尝试使用完整路径,并在os.path
函数的帮助下进行构建,与手工编写完整路径相比,它们更安全且更不易出错。
如果您确定音乐文件与python脚本位于同一目录中,则可以执行以下操作来获取其完整路径:os.path.abspath("timer_end.mp3")
作为最后一个资源,下面的代码将推断python文件的路径,并假定文件音乐位于同一目录中,从而构建文件音乐的完整路径。即使您从另一个目录启动python脚本,它也应该起作用。
filepath = os.path.abspath(__file__)
filedir = os.path.dirname(filepath)
musicpath = os.path.join(filedir, "timer_end.mp3")
pygame.mixer.music.load(musicpath)
答案 1 :(得分:0)
我认为此错误是由于找不到文件引起的。例如,以Windows示例Kalimba.mp3
为例。这里,我在Sample Music
位置有一个python文件,该文件是从另一个位置调用的。
import pygame
pygame.mixer.init()
pygame.mixer.music.load('Kalimba.mp3')
这将导致Couldn't open 'Kalimba.mp3'
错误。如果我更改为完整路径
import pygame
pygame.mixer.init()
pygame.mixer.music.load('<full path>Kalimba.mp3')
这运行没有错误。我建议您使用this tutorial中所述的音乐库来整理资产文件。