ディレクトリpython内のファイルを反復処理する方法



How Iterate Over Files Directory Python



解決:

このチュートリアルでは、特定のディレクトリ内のファイルを反復処理し、Pythonを使用してそれらに対していくつかのアクションを実行するいくつかの方法を示します。

1.使用するos.listdir()

このメソッドは、pathで指定されたディレクトリ内のエントリの名前を含むリストを返します。リストは任意の順序であり、特別なエントリ「。」は含まれていません。および「..」は、ディレクトリに存在する場合でも同様です。



:ファイルへのすべてのパスを出力しますjpgまたはpng拡張子C: Users adminディレクトリ

輸入ディレクトリ= r'C: Users admin ' にとってファイル名あなたlistdir((ディレクトリ)。 もしもファイル名で終わる(('.jpg')。 またファイル名で終わる(('.png')。 印刷((あなた加入((ディレクトリファイル名)。)。 そうしないと 継続する

2.使用するos.scandir()

Python 3.5以降、処理がはるかに簡単になりましたos.scandir()。この例は上記と同じことをしますが、代わりにos.scandir()os.listdir()



輸入ディレクトリ= r'C: Users admin ' にとってエントリあなたスキャン((ディレクトリ)。 もしも ((エントリで終わる(('.jpg')。 またエントリで終わる(('.png')。)。 エントリis_file(()。 印刷((エントリ)。

両方os.listdir()およびos.scandirアプローチでは、ディレクトリまたはディレクトリのすぐ下のファイルのみが一覧表示されます。特定のディレクトリ内のファイルとフォルダを再帰的に一覧表示する場合は、以下の方法の使用を検討してください。

3.使用するos.walk()

このメソッドは、サブディレクトリ内のすべての子孫ファイルを反復処理します。上記の例を考えてみましょう。ただし、この場合、このメソッドはすべての画像を再帰的に印刷します。C: Users adminディレクトリ。

輸入あなたにとってサブディレクトリdirsファイルあなた歩く((r'C: Users admin ')。 にとってファイル名ファイルファイルパス=サブディレクトリ+あなた9月+ファイル名もしもファイルパスで終わる(('.jpg')。 またファイルパスで終わる(('.png')。 印刷 ((ファイルパス)。

4.使用するglobモジュール

globモジュールは、Unixシェルで使用されるルールに従って、指定されたパターンに一致するすべてのパス名を検索しますが、結果は任意の順序で返されます。



すべてをリストする例を考えてみましょうpngとのPDFファイルC: Users adminディレクトリ

輸入グローブ#フォルダーC: Users admin にpng画像を印刷します にとってファイルパスグローブiglob((r'C: Users admin *。png ')。 印刷((ファイルパス)。 #フォルダC: Users admin にPDFファイルを印刷します にとってファイルパスグローブiglob((r'C: Users admin *。pdf ')。 印刷((ファイルパス)。

デフォルトでは、glob.iglobは、指定されたディレクトリのすぐ下にあるファイルのみを一覧表示します。ネストされたフォルダ内のすべてのファイルを再帰的に一覧表示するには、再帰パラメータNS

輸入グローブ#フォルダC: Users admin にpng画像を再帰的に印刷します にとってファイルパスグローブiglob((r'C: Users admin *。png '再帰的=NS)。 印刷((ファイルパス)。 #フォルダC: Users admin にPDFファイルを再帰的に印刷します にとってファイルパスグローブiglob((r'C: Users admin *。pdf '再帰的=NS)。 印刷((ファイルパス)。

あなたはどちらかを使うことができますglob.iglobまたはglob.glob。違いは、glob.iglobは、パス名パターンに一致するパスを生成するイテレータを返します。glob.globはリストを返します。

5.を使用して再帰的に反復しますからのパスクラスpathlibモジュール

以下のコードは、上記の例と同じです。この例では、png画像をフォルダーに一覧表示して印刷しますが、pathlib.Path

からpathlib輸入パスパス=(('C: Users admin')。グローブ(('**/*。png')。 にとってパス #パスは文字列ではなくオブジェクトであるためpath_in_str= NS(()。 #パスで何かをする 印刷((path_in_str)。