我可以将列表传递给PyGame Music吗?

时间:2015-09-28 20:13:00

标签: python pygame audio-player

赢10 / 64bit / 3.5:

我想将变量( mp3Fin )中的.mp3s列表传递给 pygame.mixer.music.load()。有没有办法做到这一点? PyGame在我单独加载时确实有效。我过去几周只学习编程/ python,并且是stackoverflow的新手,很抱歉,如果我遗漏了任何东西。

上次修改以下是应有的最新代码,格式正确/缩进。它仍然出现错误,但错误已更改为与Rwops'相关的内容。只发现了一些关于Rwops的链接。将删除之前的代码,因为我认为他们不再有用了。

代码:

if catChow == cat1[0]:
        print("Welcome to SoCha's music player.")   
        def get_files(directories):
            mp3Pre = []
            for root, directories, files in os.walk(directories):
                for filename in files:
                #Joins the two strings in order to form the full filepath.
                    filepath = os.path.join(root, filename)
                    mp3Pre.append(filepath) #Adds to the mp3PreParse variable above.
            return mp3Pre
        mp3Post = get_files("C:\\Users\\SoCha\\Music")
        pygame.mixer.init()
        pygame.mixer.music.load([s for s in mp3Post if s.endswith(".mp3")])
        pygame.mixer.music.play()

Rwops错误:

Welcome to SoCha's music player.
Traceback (most recent call last):
  File "SoChaOS.2.0.py", line 38, in <module>
    pygame.mixer.music.load([s for s in mp3Post if s.endswith(".mp3")])
pygame.error: Couldn't read from RWops

***Repl Closed***

这是我在这篇原帖上的最后一次编辑。

2 个答案:

答案 0 :(得分:0)

mp3fin是一个字符串。你为什么索引它?当你打电话给split()时,它会返回一个你打印的数组,然后扔掉。

在最后一行pygame.mixer.music.load(mp3Fin[1]),您正在拼接字符串并获取第二个字符,即&#39;:&#39;。

您应该只是致电pygame.mixer.music.load(mp3Fin)

  

我想将变量(mp3Fin)中的.mp3s列表传递给   pygame.mixer.music.load()。

mp3Fin不是列表。 mp3Post是您目录中找到的文件列表。每个单独的文件都在mp3Fin中,因为for循环迭代。尝试:

for mp3Fin in mp3Post:
    if mp3Fin.endswith(".mp3"):
        pygame.mixer.init()
        pygame.mixer.music.load(mp3Fin)

您可以尝试使用以下内容将列表传递给load

mp3Post = get_files("C:\\Users\\SoCha\\Music")
pygame.mixer.init()
pygame.mixer.music.load([s for s in mp3Post if s.endswith(".mp3")])

答案 1 :(得分:0)

请注意,mp3Fin.split()不会修改mp3Fin - mp3Fin会保留字符串!

所以当你到达第41行时,mp3Fin[1]正在获得mp3Fin第1位的角色。这就是错误中的“:”来自C:/...

尝试直接发送字符串

pygame.mixer.music.load(mp3Fin)

要小心这些功能!