Pythonでディレクトリの中身を一覧表示する方法【os.listdirの使い方】
Pythonでディレクトリ内のファイルやサブディレクトリを一覧表示したい場合、標準ライブラリの os モジュールに含まれる os.listdir() 関数を使うのが最も基本的な方法です。この関数は、指定したパス内にあるすべてのファイルとディレクトリの名前をリスト形式で返します。
os.listdir() の基本例
使い方は非常にシンプルです。引数にディレクトリのパスを渡すだけで、その中身が一覧表示されます。
>>> import os
>>> os.listdir('.')
['DLLs', 'Doc', 'etc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'Scripts', 'share', 'tcl', 'Tools', 'w9xpopen.exe']上記の例では、カレントディレクトリ('.')を指定しています。戻り値は文字列のリストであり、ファイル名とディレクトリ名が混在して返される点に注意してください。
ファイルだけを抽出する方法
os.listdir() の結果にはディレクトリも含まれます。もし「ファイルのみ」を取得したい場合は、os.path.isfile() を使ってフィルタリングします。リスト内包表記と組み合わせると、簡潔に書くことができます。
>>> import os
>>> file_list = [f for f in os.listdir('.') if os.path.isfile(os.path.join('.', f))]
>>> print(file_list)
['LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'w9xpopen.exe']ここで os.path.join() を使っているのは、パスとファイル名を正しく連結して絶対的・相対的な完全なパスを生成するためです。これにより、os.path.isfile() が正確に判定できるようになります。
補足:pathlibを使ったモダンな方法
Python 3.4以降では、より直感的な pathlib モジュールを利用することもできます。
>>> from pathlib import Path
>>> [f.name for f in Path('.').iterdir()] # ファイルとディレクトリ両方
>>> [f.name for f in Path('.').iterdir() if f.is_file()] # ファイルのみpathlib はオブジェクト指向のAPIを提供しており、OSごとのパス表記の違いを意識せずにコードを書けるため、近年のPython開発ではこちらが推奨されることも多くなっています。
まとめ
- ディレクトリ内の一覧取得には
os.listdir(パス)を使う - ファイルだけ欲しい場合は
os.path.isfile()でフィルタリングする - Python 3.4以降なら
pathlib.Path.iterdir()も便利な選択肢
用途に応じてこれらの方法を使い分けることで、ファイル操作を効率的に行えます。
-
Pythonの文字列は不変(イミュータブル)!同じ文字列でもid()が変わる仕組みを解説
Pythonにおいて、文字列(str型)は不変(イミュータブル)なオブジェクトです。つまり、一度作成された文字列は後から変更できません。また、Pythonでは同じ内容の文字列を作成して別々の変数に代入した場合、両方の変数が同じ文字列オブジェクト(同じメモリ領域)を参照するように最適化されることがあります。実際に確認してみましょう。同じ文字列は同じid()を持つケース>>> a = hi >>> b = hi >>> id(a) 43706848L >>> id(b) 43706848Lこのように、変数aと変数bはまったく同
-
【Python入門】関数からリストを返す基本的な方法とサンプルコード
Pythonでは、関数からリストを返す方法がいくつかあります。最も基本的なのは、関数内でリストを作成し、return文でそのリストを返すという方法です。 基本例:forループでリストを生成して返す 以下の例では、0から9までの数値を順番にリストへ追加し、完成したリストを返す関数 retList() を定義しています。 def retList(): result = [] for i in range(0, 10): result.append(i) return result a = retList() print(a) 実行結果 [0, 1,