我有一个程序在运行时播放随机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。 为什么我会收到此错误?
答案 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)
if not x == '':
break
置于songs.append