Python での再帰的ディレクトリ トラバーサルに os.walk() を使用する
ディレクトリを再帰的に移動し、その内容をリストすることは、Python プログラミングの一般的なタスクです。 os.walk() 関数は、この目標を達成するための効率的な方法を提供します。
元のコード
次のコードは、os.walk() を使用して移動する方法を示しています。ルート ディレクトリからすべてのサブディレクトリに移動し、その内容を出力します:
#!/usr/bin/python import os import fnmatch for root, dir, files in os.walk("."): print(root) print("") for items in fnmatch.filter(files, "*"): print("..." + items) print("")
このコードは、現在のディレクトリとそのサブディレクトリの内容を効果的にリストしますが、ディレクトリとファイルは区別されません。
目的の出力
ただし、目的の出力では、ディレクトリをサブフォルダーとして表示し、ファイルをそれらのフォルダー内の項目として表示する必要があります:
A ---a.txt ---b.txt ---B ------c.out
改訂コード
目的の出力を実現するために、次の修正コードでは os.path.basename() を使用してディレクトリ パスを取得します。
#!/usr/bin/python import os # traverse root directory, and list directories as dirs and files as files for root, dirs, files in os.walk("."): path = root.split(os.sep) print((len(path) - 1) * '---', os.path.basename(root)) for file in files: print(len(path) * '---', file)
このコードは、最初に os.sep を使用してパスを分割します。ディレクトリレベルを識別します。次に、その深さに応じた数のダッシュを付けたディレクトリ名を出力し、その後にそのディレクトリ内のファイルのリストをレベルごとに追加のダッシュを付けて出力します。
以上がos.walk() を使用して、Python で視覚的に構造化されたディレクトリ ツリーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。