我可以将列表传递给 PyGame Music 吗?
Can I pass a list to PyGame Music?
Win 10/64 位/3.5:
我想将变量 (mp3Fin) 中的 .mp3 列表传递给 pygame.mixer.music.load()。有没有办法做到这一点? PyGame 在我单独加载时确实有效。我最近几周才学习 programming/python 并且是 Whosebug 的新手,如果我遗漏了任何内容,我深表歉意。
上次编辑 这是最新的代码,应该是正确的formatted/indented。它仍然出现错误,但错误已更改为与 'Rwops' 相关的内容。只在 bing 之外找到了几个关于 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***
这是我对原版进行的最后一次编辑 post。
mp3fin
是一个字符串。你为什么要索引它?当你调用 split()
时,它 returns 一个数组,你打印它,然后扔掉。
在最后一行 pygame.mixer.music.load(mp3Fin[1])
中,您正在拼接字符串并获取第二个字符,即“:”。
你应该直接打电话给 pygame.mixer.music.load(mp3Fin)
I want to pass a list of .mp3s from within a variable (mp3Fin) to
pygame.mixer.music.load().
mp3Fin
不是列表。 mp3Post 是在您的目录中找到的文件列表。随着 for 循环的迭代,每个单独的文件都在 mp3Fin
中。尝试:
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")])
请记住,mp3Fin.split()
不会就地修改 mp3Fin
- mp3Fin
仍然是一个字符串!
所以当你到达第 41 行时,mp3Fin[1]
正在获取 mp3Fin
位置 1 的字符。这就是错误中“:”的来源,C:/...
。
尝试直接将字符串发送给它
pygame.mixer.music.load(mp3Fin)
这些函数一定要小心!
Win 10/64 位/3.5:
我想将变量 (mp3Fin) 中的 .mp3 列表传递给 pygame.mixer.music.load()。有没有办法做到这一点? PyGame 在我单独加载时确实有效。我最近几周才学习 programming/python 并且是 Whosebug 的新手,如果我遗漏了任何内容,我深表歉意。
上次编辑 这是最新的代码,应该是正确的formatted/indented。它仍然出现错误,但错误已更改为与 'Rwops' 相关的内容。只在 bing 之外找到了几个关于 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***
这是我对原版进行的最后一次编辑 post。
mp3fin
是一个字符串。你为什么要索引它?当你调用 split()
时,它 returns 一个数组,你打印它,然后扔掉。
在最后一行 pygame.mixer.music.load(mp3Fin[1])
中,您正在拼接字符串并获取第二个字符,即“:”。
你应该直接打电话给 pygame.mixer.music.load(mp3Fin)
I want to pass a list of .mp3s from within a variable (mp3Fin) to pygame.mixer.music.load().
mp3Fin
不是列表。 mp3Post 是在您的目录中找到的文件列表。随着 for 循环的迭代,每个单独的文件都在 mp3Fin
中。尝试:
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")])
请记住,mp3Fin.split()
不会就地修改 mp3Fin
- mp3Fin
仍然是一个字符串!
所以当你到达第 41 行时,mp3Fin[1]
正在获取 mp3Fin
位置 1 的字符。这就是错误中“:”的来源,C:/...
。
尝试直接将字符串发送给它
pygame.mixer.music.load(mp3Fin)
这些函数一定要小心!