2014-03-04 19 views
1

我正在開發一款遊戲,並且有一個功能可在嘗試加載之前檢查有效的音頻文件。功能如下:os.path.join找不到指定目錄中的文件

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文件是還包含一個文件夾名爲數據的文件夾中。嵌套在這是幾個文件夾,其中之一是「聲音」。該laser.wav文件是該文件夾中:

Project folder nesting

功能因錯誤而失敗:

Cannot load sound: data\sounds/laser.wav 

爲什麼蟒蛇添加\數據之後,它應該是一個/? 當我直接加載文件,它們的加載細,比如這個:

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

更具體地講,爲什麼找不到文件?

+0

''\''是默認的Windows路徑分隔符;你可以在Windows路徑中安全地混合''''和'/'。 –

+0

O.K.這仍然無法解釋爲什麼當它顯然存在時找不到文件。 –

+1

這就是爲什麼這是一個評論,而不是一個答案。 :-)可能是因爲pygame在這方面不夠靈活。 –

回答

0

所以事實證明,代碼是好的,這是WAV文件,這是問題。我將laser.wav轉換爲OGG文件,現在文件加載正常。