logo

Pythonを使用してディレクトリ内のファイルを反復処理するにはどうすればよいですか?

ディレクトリ フォルダーとも呼ばれる、ファイルまたは複数のフォルダーを保存および検索するための、システムのファイル システム内の単位組織構造です。スクリプト言語としての Python は、さまざまなメソッドを提供します。ディレクトリ内のファイルを反復処理します。

以下は、Python を使用してディレクトリ内のファイルを反復処理できるさまざまなアプローチです。



方法 1: os.listdir()

この関数は次のリストを返します。 ファイル そして サブディレクトリ 指定されたディレクトリに存在します。次を使用してリストをフィルタリングしてファイルのみを取得できます os.path.isfile() 関数:

例:



Python3






# import required module> import> os> # assign directory> directory>=> 'files'> # iterate over files in> # that directory> for> filename>in> os.listdir(directory):> >f>=> os.path.join(directory, filename)> ># checking if it is a file> >if> os.path.isfile(f):> >print>(f)>

>

>

出力:

方法 2: os.scandir()

このメソッドは、次の反復子を取得するために使用されます。 os.DirEntry 指定されたパスで指定されたディレクトリ内のエントリに対応するオブジェクト。

例:

Python3




# import required module> import> os> # assign directory> directory>=> 'files'> # iterate over files in> # that directory> for> filename>in> os.scandir(directory):> >if> filename.is_file():> >print>(filename.path)>

>

>

出力:

方法 3: パスライブラリモジュール

次を使用して、ディレクトリ内のファイルを反復処理できます。 パス.glob() 指定されたディレクトリ内の指定されたパターンをグロブし、一致するファイルを生成する関数。 パス.glob('*') 指定されたディレクトリ内のすべてのファイルを取得します

例:

Python3


配列リストから削除する



# import required module> from> pathlib>import> Path> # assign directory> directory>=> 'files'> # iterate over files in> # that directory> files>=> Path(directory).glob(>'*'>)> for> file> in> files:> >print>(>file>)>

>

>

出力:

方法 4: os.walk()

3 タプルが生成されるため、この方法を使用してサブディレクトリを検索することもできます。 (ディレクトリパス、ディレクトリ名、ファイル名)

  • : 指定したディレクトリのみを出力します。
  • 言う : ルートからサブディレクトリを出力します。
  • ファイル : ルートおよびディレクトリからすべてのファイルを出力します。

Python3




# import required module> import> os> # assign directory> directory>=> 'files'> # iterate over files in> # that directory> for> root, dirs, files>in> os.walk(directory):> >for> filename>in> files:> >print>(os.path.join(root, filename))>

>

>

出力:

方法 5: グロブモジュール

glob.iglob() 関数は、指定されたパターンに一致するパス名のリストの反復子を返します。

例:

Python3




# import required module> import> glob> # assign directory> directory>=> 'files'> # iterate over files in> # that directory> for> filename>in> glob.iglob(f>'{directory}/*'>):> >print>(filename)>

>

>

出力: