0
0

More than 1 year has passed since last update.

ファイルツリーを走査する際に特定のディレクトリの配下は無視したい

Last updated at Posted at 2022-01-16

python3でファイルツリーをトラバースしたい場合、標準ライブラリとしてはos.walkが用意されているのですが、このAPIは指定したディレクトリの配下すべてを探索してしまうため、「特定の名称のディレクトリの配下は走査しない」というような場合には、os.walkを利用せず、自前で実装することになります。

以下は「カレントディレクトリからファイルツリーをトラバースしていって、ファイルが見つかったら何かする、ただし.gitディレクトリと.svnディレクトリの配下は走査しない」ということを実装したものになります。

import pathlib

stack = [pathlib.Path('./')]
skips = {'.git', '.svn'}
while stack:
    entry = stack.pop()
    if entry.name in skips:
        continue
    if entry.is_dir():
        stack.extend(entry.iterdir())
    if entry.is_file():
        do_something(entry)

2022-01-17 22:00 追記

コメントで指摘があった通り、os.walkでも同じことが実現できることがわかりました。不勉強でした(´・ω・`)

import os

skips = {'.git', '.svn'}

for dirpath, dirnames, filenames in os.walk('./'):
    for skip in skips:
        if skip in dirnames:
            dirnames.remove(skip)

    for filename in filenames:
        do_something(os.path.join(dirpath, filename))
0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0