Pygame无法在Raspberry Pi上播放歌曲

时间:2016-08-21 15:05:38

标签: python raspberry-pi pygame

我有一个程序在运行时播放随机wav文件。但是,当我运行程序时,我收到此错误:

Traceback (most recent call last):
  File "pi/home/python_music/music.py", line 19, in <module>
      pygame.mixer.music.load(song)
error: Couldn't open 'Song1.wav
'

这是代码:

import pygame
import random

f = open('List.txt', 'r+')
songs = []

while True:
    x = f.readline()
    if x == '':
        break
    songs.append(x)
f.close()

while True:
    y = randint(0, len(songs))
    song = songs[y]

    pygame.mixer.init()
    pygame.mixer.music.load(song)
    pygame.mixer.music.play()

    while True:
        if pygame.mixer.music.get_busy()== False:
            pygame.mixer.quit()
            break

和List.txt看起来像这样:

Song1.wav
Song2.wav
Song3.wav
.
.
.
Song12.wav

该程序使用Pygame在Raspberry Pi上运行Raspbian。 为什么我会收到此错误?

2 个答案:

答案 0 :(得分:1)

在您的代码中,您正在阅读文件的整行,包括换行符。您可以通过而不是

来避免这种情况
f = open('List.txt', 'r+')
songs = []
while True:
    x = f.readline()
    if x == '':
        break
    songs.append(x)
    f.close()
 y = randint(0, len(songs))

可以替换为

f = open('List.txt', 'r+')
songs = f.read().splitlines()
f.close()

您还会在某个时刻到达超出范围的索引,因为列表的最大索引比长度小1,这意味着您需要:

y = random.randint(0, len(songs) - 1)

在我的代码中,我不得不使用random.randint而不是randint(我不知道它是否适合你)

答案 1 :(得分:0)

  1. 确保您的.wavs与.py
  2. 位于同一文件夹中
  3. 确保它们被称为'Song1.wav'
  4. 尝试if not x == '':
  5. break置于songs.append