Python で os.walk() を使用してディレクトリを再帰的に走査する: 詳細ガイド
概要
Python の os.walk() 関数は、再帰的に実行するための強力なメカニズムを提供します。ディレクトリツリーを横断します。これは、指定されたディレクトリ内のすべてのディレクトリとファイルを反復処理するため、ファイル管理やディレクトリ探索などのタスクに不可欠なツールになります。
問題: ディレクトリ リストの出力のカスタマイズ
os.walk() の機能を実証するには、次のシナリオを検討してください。ルート ディレクトリから再帰的に移動し、カスタマイズされたディレクトリのリストを出力したいとします。
初期コードと O/P
次のコードを使用します:
import os import fnmatch for root, dir, files in os.walk("."): print(root) print("") for items in fnmatch.filter(files, "*"): print("..." + items) print("")
次の出力が得られます。
. ...Python_Notes ...pypy.py ...pypy.py.save ...classdemo.py ....goutputstream-J9ZUXW ...latest.py ...pack.py ...classdemo.pyc ...Python_Notes~ ...module-demo.py ...filetype.py ./packagedemo ...classdemo.py ...__init__.pyc ...__init__.py ...classdemo.pyc
ただし、この出力は目的の形式を満たしていませんの:
A ---a.txt ---b.txt ---B ------c.out
解決策
出力をカスタマイズするには、改善されたアプローチが必要です。次のコードは、目的の形式を実現します。
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)
説明
このコードは、次のロジックを使用します。
出力
この改良されたコードを使用すると、目的の出力が得られます。
A ---a.txt ---b.txt ---B ------c.out
この出力では、Aおよび B はディレクトリを表し、a.txt、b.txt、および c.out はファイルを表します。接頭辞のハイフンの数は、各項目のネスト レベルを示します。
以上がPython の os.walk() 関数の出力をカスタマイズして、ネストされたディレクトリ リストを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。