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

私はおそらく何か明らかなものが欠けていますか?

乾杯。

4

1 に答える 1

2

root各ループですでにディレクトリ名を提供しています。それを絶対にしてlリストに追加するだけです。次に、次のディレクトリに移動します (1 つの一致で十分です)。

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含まれている iterable の最初の要素がTrue;であるとすぐに戻ります。で終わる最初のファイルはTrue.mp3any()返し、現在のディレクトリが一致のリストに追加されます。

于 2013-02-10T10:49:13.827 に答える