1. ホーム
  2. python

[解決済み] os.walkは、以下のディレクトリを掘ることなく使用できます。

2022-09-10 07:19:06

質問

どのようにすれば os.walk を、私が提供したディレクトリ内のファイルのみを返すように制限するにはどうすればよいですか?

def _dir_list(self, dir_name, whitelist):
    outputList = []
    for root, dirs, files in os.walk(dir_name):
        for f in files:
            if os.path.splitext(f)[1] in whitelist:
                outputList.append(os.path.join(root, f))
            else:
                self._email_to_("ignore")
    return outputList

どのように解決するのですか?

を使用します。 walklevel 関数を使用します。

import os

def walklevel(some_dir, level=1):
    some_dir = some_dir.rstrip(os.path.sep)
    assert os.path.isdir(some_dir)
    num_sep = some_dir.count(os.path.sep)
    for root, dirs, files in os.walk(some_dir):
        yield root, dirs, files
        num_sep_this = root.count(os.path.sep)
        if num_sep + level <= num_sep_this:
            del dirs[:]

と同じように動作します。 os.walk と同じように動作しますが level パラメータを渡すことができます。