返回包含指定扩展名的目录列表

时间:2013-02-10 10:46:26

标签: python

我想得到包含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))

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

干杯。

1 个答案:

答案 0 :(得分: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,并将当前目录添加到匹配列表中。