当python文件与声音文件位于不同的目录中时,如何播放声音?
因此,我正在制作一个基于文本的游戏,完成后,我想将最终产品编译成.exe格式,这样它就很容易共享(我计划使用cx\U freeze) 现在,我想为游戏添加一些背景音乐,如果且仅当python文件在桌面上,以及“sound.wav”也在桌面上,下面的代码工作得很好,我正在寻找在后台执行sound.wav的方法,无论它与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
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不起作用:(有什么建议吗?什么不起作用?你试过什么?