コンテンツにスキップ

ディレクトリ内のファイル一覧をPythonで取得する方法

[

ディレクトリ内のファイルのリストを取得する方法

Pythonでファイル関連の操作を行う場合、ディレクトリ内のすべてのファイルとフォルダのリストを取得することは、自然な第一歩です。しかし、調べてみると、さまざまな方法があることに驚かれるかもしれません。

同じことをするための一つの解決策があるということは、おそらく、すべての解決策にはそれぞれの利点とトレードオフがあるということです。これは、Pythonでディレクトリの内容をリストアップする際にも当てはまります。

Python 3.4以前では、ファイルパスを扱う場合にはosモジュールを使用します。これはパフォーマンスの面では非常に効率的でしたが、すべてのパスを文字列として扱わなければなりませんでした。

最初はパスを文字列として扱うことは問題ありませんが、複数のオペレーティングシステムを組み合わせると、より複雑な状況になります。また、ファイルパスに関連する多くの文字列操作のコードが生成されるため、抽象的になりがちです。すぐに分かりにくくなります。

これは、文字列としてパスを処理することが不可能ではないということではありません。何年もの間pathlibが存在しなかった時代も、開発者たちはうまく処理していました。pathlibモジュールは、多くのトリッキーな部分を処理してくれ、コードのメインのロジックに集中できるようにします。

まず、オペレーティングシステム(OS)に応じて異なるPathオブジェクトを作成します。WindowsではWindowsPathオブジェクト、LinuxとmacOSではPosixPathオブジェクトが返されます。

Windows

import pathlib
desktop = pathlib.Path("C:/Users/RealPython/Desktop")
desktop
# Output: WindowsPath("C:/Users/RealPython/Desktop")

Linux + macOS

import pathlib
desktop = pathlib.Path("/home/RealPython/Desktop")
desktop
# Output: PosixPath('/home/RealPython/Desktop')

これらのOSに対応したオブジェクトでは、さまざまなメソッドやプロパティを利用することができます。