Python 3.x 如何使pygame中的歌曲路径相对

Python 3.x 如何使pygame中的歌曲路径相对,python-3.x,pygame,relative-path,Python 3.x,Pygame,Relative Path,我正在用python编写一个简单的蛇游戏,它在家里也能正常工作,但是当我把代码放到github上时,它找不到歌曲的路径,我想把这个路径设置为相对的,绝对的,所以它可以在每台计算机上运行 以下是歌曲文件的部分代码- def game_sound(s): """ Include the game sfx and music""" if s == 0: pygame.mixer.music.load("background.ogg")

我正在用python编写一个简单的蛇游戏,它在家里也能正常工作,但是当我把代码放到github上时,它找不到歌曲的路径,我想把这个路径设置为相对的,绝对的,所以它可以在每台计算机上运行

以下是歌曲文件的部分代码-

 def game_sound(s):
        """ Include the game sfx and music"""
        if s == 0:
            pygame.mixer.music.load("background.ogg")
            pygame.mixer.music.play(-1)
        elif s == 1:
            pygame.mixer.Sound("eating.wav").play()
        elif s == 2:
            pygame.mixer.Sound("game-over.wav").play()

TL-DR-它在家里起作用,而在其他任何地方都不起作用,我试图找到一种方法来解决这个问题,通过使路径相对我只是不知道如何。有人能帮忙吗?

标准方法是使用应用程序查找文件夹的实际路径

import os, sys

APP_FOLDER = os.path.dirname(os.path.realpath(sys.argv[0]))
然后使用它创建文件的实际路径

full_path = os.path.join(APP_FOLDER, "eating.wav")

pygame.mixer.Sound(full_path).play()
或者您必须将
“当前工作目录”
(CWD)更改为应用程序文件夹

os.chdir(APP_FOLDER)

pygame.mixer.Sound("eating.wav").play()
您可以使用检查当前工作目录

print(os.getcwd())


顺便说一句:如果没有这个方法,问题不仅是当你在不同的计算机上运行时,而且当你在同一台计算机上从不同的文件夹运行时——所以当你在桌面上创建快捷方式/图标,以
python game\u folder/game.py的形式执行程序时,问题就出现了,无论如何,谢谢。如果你在不同的文件夹中运行代码而不是游戏文件夹,那么你必须找到游戏文件夹的完整路径并加入歌曲文件。