ホームページ >バックエンド開発 >Python チュートリアル >os.walk() を使用して、Python で視覚的に構造化されたディレクトリ ツリーを作成するにはどうすればよいですか?

os.walk() を使用して、Python で視覚的に構造化されたディレクトリ ツリーを作成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-08 22:06:02733ブラウズ

How can I use os.walk() to create a visually structured directory tree in Python?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。