当python文件与声音文件位于不同的目录中时,如何播放声音?

当python文件与声音文件位于不同的目录中时,如何播放声音?,python,audio,Python,Audio,因此,我正在制作一个基于文本的游戏,完成后,我想将最终产品编译成.exe格式,这样它就很容易共享(我计划使用cx\U freeze) 现在,我想为游戏添加一些背景音乐,如果且仅当python文件在桌面上,以及“sound.wav”也在桌面上,下面的代码工作得很好,我正在寻找在后台执行sound.wav的方法,无论它与python文件在同一个或不同的目录上,谢谢 import winsound winsound.PlaySound('sound.wav', winsound.SND_FILENAM

因此,我正在制作一个基于文本的游戏,完成后,我想将最终产品编译成.exe格式,这样它就很容易共享(我计划使用cx\U freeze) 现在,我想为游戏添加一些背景音乐,如果且仅当python文件在桌面上,以及“sound.wav”也在桌面上,下面的代码工作得很好,我正在寻找在后台执行sound.wav的方法,无论它与python文件在同一个或不同的目录上,谢谢

import winsound
winsound.PlaySound('sound.wav', winsound.SND_FILENAME)

使用
os
package生成音乐文件的绝对路径,以确保它始终正常工作

例如,如果项目的结构是

root
    src
        your_python_file.py
    assets
        sound.wav
因此,您可以通过以下方式生成sound.wav的绝对路径:

import os
# __file__ means the path of the current python script
root_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
bg_path = os.path.join(root_dir, "assets", "sound.wav")

假设您有一个子文件夹名为
foo
,第二个子文件夹名为
subfo

如果要进入
foo
子文件夹,请使用
foo/sound.wav
如果要进入第二个子文件夹
subfo
请使用
foo/subfo/sound.wav

如果你想查字典,你可以使用
/
。例如,如果您的声音位于
foo
中,并且您在
子文件夹中编写脚本
,则可以使用
/sound.wav
访问该声音,以逐个访问文件,再次使用
/

否则,您可以使用从
C:
或希望访问的驱动器开始的“绝对”文件路径。例如,如果您的文件名位于桌面,您可以使用:

C:/users/username/Desktop/foo/subfoo/sound.wav

也许使用绝对路径?@DeepSpace怎么会这样?我对语言
'/this/is/absolute/path/to/sound.wav'
@DeepSpace不起作用:(有什么建议吗?什么不起作用?你试过什么?