我想得到包含mp3的当前目录下的目录列表。
我可以使用os.walk
轻松获取文件列表。我可以使用os.path.join(os.path.abspath(root), file)
轻松地获得完整路径,但我只想要一个包含匹配目录的列表。我已尝试使用os.path.dirname
和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))
我可能错过了一些明显的东西?
干杯。
答案 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,并将当前目录添加到匹配列表中。