Python: フォルダーの再帰的読み取りに取り組む
初心者が Python を始めようとすると、フォルダー内のテキスト ファイルを再帰的に読み取るという課題に遭遇するかもしれません。階層。オンラインで出回っているコード スニペットはこの問題に対処していますが、単一のフォルダーを超えて調査できないという限界があります。このガイドでは、Python の os.walk 関数をさらに深く掘り下げ、フォルダー構造の内容を再帰的に効果的に走査して出力するための os.path.join を紹介します。
os.walk について
前述のコードで採用されている中心的なメカニズムは、Python の os.walk 関数です。ルート、サブディレクトリ、ファイルという 3 つの異なる値を返します。 root は検査対象の現在のディレクトリを表し、subdirs はルート内のサブディレクトリをリストし、files はルートに存在するディレクトリ以外のファイルを列挙します。
ループの問題への対処
元のコード複数のレベルのフォルダーを走査しようとすると、ループの反復が失敗します。これを解決するには、現在のルート ディレクトリ内のサブディレクトリとそれぞれのファイルをループするように変更する必要があります。
os.path.join の適用
この問題は次の点で発生します。ファイルパスの不適切な連結。 os.path.join は、現在のルートとファイル名を結合することにより、正確なパス操作を保証します。
拡張コード
洗練された Python スクリプトには、次の拡張機能が組み込まれています。
<code class="python">import os import sys walk_dir = sys.argv[1] for root, subdirs, files in os.walk(walk_dir): list_file_path = os.path.join(root, 'my-directory-list.txt') with open(list_file_path, 'wb') as list_file: for subdir in subdirs: list_file.write(('Subdirectory: {}\n'.format(subdir)).encode('utf-8')) for filename in files: file_path = os.path.join(root, filename) list_file.write(('File: {} (full path: {})\n'.format(filename, file_path)).encode('utf-8'))</code>
with ステートメントの使用
with ステートメントは、ファイル操作を処理する便利かつ効率的な方法を提供し、適切なリソース管理を保証します。プロセスを合理化し、完了時にファイルが自動的に閉じられるようにします。
結論
この拡張ガイドでは、最初の問題について詳しく説明し、os.walk の包括的な理解を提供します。そしてos.path.join。強化されたコードには、効率的かつ正確にフォルダーを再帰的に読み取るためのこれらの概念が組み込まれており、Python ユーザーが複雑なディレクトリ構造を効果的に横断できるようになります。
以上がPython フォルダー内のファイルを再帰的に効果的に読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。