python - 无法使用pygame在循环内连续播放mp3文件?

标签 python pygame

<分区>

嗨,我想播放 mp3,但是当调用 logCreater 函数时,错误显示可以加载 mp3。 第一次它可以正确播放音频,但是当它被召回时它无法加载 mp3。 错误消息说 pygame.mixer.music.load 无法加载 xxxxx.mp3 文件 实际上这是 lil 项目,这只是其中的一个模块。 请建议我修改代码。

错误信息是:

追溯(最近的调用最后): 文件“e:\Tutorials etc\ProjBack\Healthy_programmer_cli\MainModule.py”,第 151 行,位于 时间计数() 文件“e:\Tutorials etc\ProjBack\Healthy_programmer_cli\MainModule.py”,第 65 行,在 timCount 中 EyeExcercise.logCreater() logCreater 中的文件“e:\Tutorials etc\ProjBack\Healthy_programmer_cli\EyeExcercise.py”,第 45 行 pygame.mixer.music.load("Eyesound.mp3") pygame.error: 无法打开“Eyesound.mp3”

import os
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
from os.path import expanduser

import time as t
import getpass
usernm = getpass.getuser()
from datetime import datetime
import pygame





def userDirFinder():
    from os.path import expanduser
    usrpth = expanduser("~")
    mainp = os.path.join(usrpth, "Documents")
    return mainp

def checknSetdir():
    mainp=userDirFinder()
    target_path = os.path.join(mainp,"HealthManger","Eye_Excercise_log")

    if os.path.exists(target_path):
        os.chdir(target_path)
    else:

        os.makedirs(target_path)
        os.chdir(target_path)


def getCurrentDateandTime():
    Dat = datetime.now()

    currentD = Dat.strftime("%d/%m/%Y") 
    currentT = Dat.strftime("%I:%M %p")
    return currentD , currentT



def logCreater():
        print("Countdown paused")
        pygame.mixer.init()
        pygame.mixer.music.load("Eyesound.mp3")
        pygame.mixer.music.play(-1)

        write_msg = f"Eye Excercise Done by {usernm}"


        while 1:

            try:
                print("Time for a Eye Excercise Break , After the Eye Excercise")
                usr_msg = input("Type \"Done\" to stop this alarm: ")

                usr_msg = usr_msg.lower()
                if usr_msg != "done":
                    raise ValueError("Invalid Answer")
                elif "done" == usr_msg:
                    checknSetdir()
                    with open("eye_excercise_log.txt","a") as fi:
                        cdat , ctim = getCurrentDateandTime()
                        fi.write(f"Date: {cdat}          Time: {ctim}          Message: {write_msg}\n")
                        # print("Log Created")

                        pygame.mixer.music.stop()

                        break


            except Exception as e:
                print(e)


def logReader():

        try:
            checknSetdir()

            with open("eye_excercise_log.txt","r") as fi:
                lis = fi.readlines()
                for i in lis:
                    print(i)
            input("Press to contiue")
        except FileNotFoundError:
            print("File is not created Yet")
            input("Press to contiue")



if __name__ =="__main__":
    while True:
        logCreater()

最佳答案

First time it play audio correctly but when it's recalled then it cant load mp3

播放音乐后,当前工作目录在函数 checknSetdir 中由 os.chdir(target_path) 更改。

获取应用程序开头的当前工作目录:

import os

currentWorkDir = os.getcwd()

使用绝对路径加载文件“Eyesound.mp3”:

pygame.mixer.music.load(os.path.join(currentWorkDir, "Eyesound.mp3"))

关于python - 无法使用pygame在循环内连续播放mp3文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61366913/

相关文章:

python - 反转 'login',参数 '()' 和关键字参数 '{}' 未找到

python - 在 matplotlib 中一起分解多个饼图

切换到linux时python pygame程序无法正常工作

python - 橙色仅随机出现在屏幕 python 的右侧

python - 属性错误: 'Ship' object has no attribute 'bullet_width'

python 3 : Checking next value of an iterator without iterating

python - 有没有一种方法可以将图像保存在 OpenCV 执行期间创建的子文件夹中

jquery 自动完成标记

python - Python中按住退格键删除多个字符

python - 蛇游戏,但问题是,如果我向左移动蛇,然后向右移动蛇,蛇本身会崩溃或相反,上下相同