赢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***
这是我在这篇原帖上的最后一次编辑。
答案 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)
要小心这些功能!