当 python 文件与声音文件位于不同的目录时,如何播放声音?
Posted
技术标签:
【中文标题】当 python 文件与声音文件位于不同的目录时,如何播放声音?【英文标题】:How do you play sounds when the python file is in a different directory as the sound file? 【发布时间】:2017-10-30 13:35:11 【问题描述】:所以我正在制作一个基于文本的游戏,完成后,我想将最终产品编译为 .exe 格式,这样很容易分享(我打算使用 cx_freeze) 现在,我想为游戏添加一些背景音乐,下面的代码可以正常工作如果且仅当 python 文件在桌面上,我正在寻找的“sound.wav”也是如此在后台执行sound.wav的方法,无论它与python文件在同一目录还是不同目录,谢谢
import winsound
winsound.PlaySound('sound.wav', winsound.SND_FILENAME)
【问题讨论】:
或许使用绝对路径? @DeepSpace 怎么样?我对这门语言还很陌生'/this/is/absolute/path/to/sound.wav'
en.wikipedia.org/wiki/…
@DeepSpace 不起作用 :( 有什么建议吗?
什么不起作用?你试过什么?
【参考方案1】:
使用os
包生成音乐文件的绝对路径,以确保它始终正常工作。
例如,如果您的项目结构是
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")
【讨论】:
【参考方案2】:假设您有一个名为 foo
的子文件夹和另一个名为 subfoo
的子文件夹
如果您想进入foo
子文件夹,请使用foo/sound.wav
,如果您想进入第二个子文件夹subfoo
,请使用foo/subfoo/sound.wav
。
如果你想查字典,可以使用./
。例如,如果您的声音位于 foo
并且您在 subfoo
中编写脚本,则可以使用 ./sound.wav
访问它以逐个向上使用 ./
再次使用。
否则,您可以使用从C:
或您希望访问的驱动器开始的“绝对”文件路径。例如,如果您的文件文件名位于 Desktop 中,您可以使用:
C:/users/username/Desktop/foo/subfoo/sound.wav
【讨论】:
以上是关于当 python 文件与声音文件位于不同的目录时,如何播放声音?的主要内容,如果未能解决你的问题,请参考以下文章