我写了这个脚本为我的音乐收藏制作M3u文件,所以我只能打开一个文件并听一整张cd或者w.e.
ATM的脚本是什么:为CWD中的每首歌创建一个M3u文件,将一个M3u文件中的底层文件夹放在CWD中。
但我想在CWD的每个子文件夹中制作一个M3u文件。 因此,在到达子文件夹时,它应该打开一个带有CWD文件名的文件,并将该文件夹的所有名称放入该文件中,并将文件保存为:“CWD”.M3u
import os,sys
folder_name=os.path.basename(os.getcwd())
folder=os.getcwd()
ext3=['.mp3','.Mp3']
file=open('%s.m3u'%(folder_name),'w')
for root, dirs, files in os.walk(folder):
for x in files:
if x[-4:] in ext3:
print(root+'\\'+x)
file.write('%s\%s\n'%(root,x))
file.close()
if not x[-4:] in ext3:
print("List is empty.")
答案 0 :(得分:0)
我认为这就是你要找的东西。 os.walk
实际上是递归的,因此只需在外部.m3u
循环的每次迭代中直接打开一个新的for
文件,就可以使代码正常工作:
import os
exts = ('.mp3','.Mp3')
for root, dirs, files in os.walk(os.getcwd()):
m3uname = os.path.basename(root)
with open("{}.m3u".format(os.path.join(root, m3uname)), 'w') as outfile:
for f in files:
if f.endswith(exts):
outfile.write('{}\n'.format(os.path.join(root, f)))