2013-02-10 77 views
0

我想要获取包含mp3的当前目录下的目录列表。包含指定扩展名的目录的返回列表

我可以使用os.walk轻松获得文件列表。我可以使用os.path.join(os.path.abspath(root), file)轻松获得完整路径,但我只想要一个包含匹配目录的列表。我尝试过使用os.path.dirnameos.path.pardir,但是我得到的全部是'..'

import os 
l = [] 
for root, dirs, files in os.walk('.'): 
    for file in files: 
     if file.endswith('.mp3'): 
      l.append(os.path.dirname(file)) 

我可能错过了一些明显的东西?

干杯。

回答

2

root已经给你在每个循环的目录名称;只需做出绝对的并添加到l列表。然后移动到下一个目录(一个匹配是足够了):

import os 
l = [] 
for root, dirs, files in os.walk('.'): 
    if any(file.endswith('.mp3') for file in files): 
     l.append(os.path.abspath(root)) 

any()返回True只要它发现在包含可迭代即True第一元件;因此以.mp3结尾的第一个文件将导致any()返回True,并将当前目录添加到匹配列表中。

+0

非常感谢* – 2013-02-10 10:55:03