0

我想获取包含 mp3 的当前目录下的目录列表。

我可以很容易地使用os.walk. 我可以很容易地使用 获得完整路径os.path.join(os.path.abspath(root), file),但我只想要一个包含匹配目录的列表。我试过使用os.path.dirnameand os.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))

我可能遗漏了一些明显的东西?

干杯。

4

1 回答 1

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 并且当前目录被添加到匹配列表中。

于 2013-02-10T10:49:13.827 回答