Os.walk到达一个新文件夹

时间:2014-08-27 23:15:33

标签: python os.walk

我写了这个脚本为我的音乐收藏制作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.")

1 个答案:

答案 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)))