Python 在包含声音文件路径的列表上循环

Python 在包含声音文件路径的列表上循环,python,pygame,Python,Pygame,所以我计划做的是循环一个列表,其中包含我的声音文件的路径,并使用python中的pygame.mixer模块播放它们,但当我这样做时,我遇到的问题是pygame总是播放列表中最后一个索引最多的路径文件,其余的都被跳过。示例:如果我的列表包含2项: music\u list=['abc.mp3','gef.mp3'] 对于范围内的音乐索引(len(音乐列表)): mixer.init() mixer.music.load(音乐列表[音乐索引]) 混音器。音乐。播放() 然后它从不播放abc.mp3

所以我计划做的是循环一个列表,其中包含我的声音文件的路径,并使用python中的pygame.mixer模块播放它们,但当我这样做时,我遇到的问题是pygame总是播放列表中最后一个索引最多的路径文件,其余的都被跳过。示例:如果我的列表包含2项:

music\u list=['abc.mp3','gef.mp3']
对于范围内的音乐索引(len(音乐列表)):
mixer.init()
mixer.music.load(音乐列表[音乐索引])
混音器。音乐。播放()
然后它从不播放abc.mp3文件,而是直接播放最后一个文件gef.mp3

我认为这是因为play()方法不会对代码进行分组,所以在启动音乐后,代码将继续。因此,您将开始播放第一首音乐,然后立即启动第二首音乐。您将跳过所有音乐,只播放最后一首。

您不需要使用范围来迭代python中的列表项,只需使用:

for music in music_list:
     ...
     mixer.music.load(music)
     ...
我会成功的

根据您的代码不起作用的原因,很可能是因为您不能同时播放两首歌曲,所以最后一首歌曲将在前一首歌曲上播放。

用于加载声音文件并将其排队:

mixer.init()
mixer.music.load('abc.mp3')
混音器。音乐。播放()
mixer.music.queue('gef.mp3')

您能否澄清一下,您正试图通过这种方式实现什么目标?你想制作一个播放列表吗?如果是,请选中此选项:尝试在
play()
之后添加
time.sleep
。您正在播放这两个文件,只是一个接一个。这是正确的,
pygame.mixer.music.play()
(请参阅文档)未被阻止,下一首歌曲一被调用就开始播放,因此只有最后一首歌曲会被循环实际播放。在
play()
的文档中:“这将播放加载的音乐流。如果音乐已经在播放,将重新启动。”