os.path.join未能在指定目录中找到文件

1 投票
1 回答
981 浏览
提问于 2025-04-17 20:49

我正在开发一个游戏,有一个函数用来检查音频文件是否有效,然后再尝试加载它们。这个函数的样子是这样的:

def load_sound(name):
    class NoneSound:
        def play(self): pass
    if not pygame.mixer or not pygame.mixer.get_init():
        return NoneSound()
    fullname = os.path.join('data', name)
    try:
        sound = pygame.mixer.Sound(fullname)
    except pygame.error:
        print('Cannot load sound:', fullname)
        raise SystemExit
    return sound

传入这个函数的对象其实很简单:

fire = load_sound("sounds/laser.wav")

这个.py文件放在一个文件夹里,这个文件夹里还有一个叫做data的文件夹。在data文件夹里,有几个子文件夹,其中一个是“sounds”。激光.wav文件就在这个文件夹里:

项目文件夹结构

但是这个函数出错了,错误信息是:

Cannot load sound: data\sounds/laser.wav

为什么Python在data后面加了一个\,而应该是/呢?当我直接加载文件时,它们能正常加载,比如这样:

music = pygame.mixer.music.load("data/music/Zone_66_Theme.ogg")

更具体地说,为什么找不到这个文件呢?

1 个回答

0

结果发现代码没问题,问题出在WAV文件上。我把laser.wav文件转换成了OGG格式,现在这个文件加载得很好。

撰写回答