[Python] カレントディレクトリのファイル一覧を取得・表示する方法
Pythonでカレントディレクトリのファイル一覧を取得・表示するには、標準ライブラリのosモジュールやpathlibモジュールを使用します。
osモジュールではos.listdir()を使い、カレントディレクトリのファイルやディレクトリをリスト形式で取得できます。
pathlibモジュールではPath.cwd()でカレントディレクトリを取得し、iterdir()メソッドでファイル一覧を取得できます。
どちらも簡単にディレクトリ内のファイルを表示できます。
カレントディレクトリとは?
カレントディレクトリとは、現在の作業ディレクトリのことを指します。
プログラムがファイルを読み込んだり、書き込んだりする際に、デフォルトで参照される場所です。
Pythonを含む多くのプログラミング言語では、カレントディレクトリを基準にしてファイルパスを解決します。
例えば、カレントディレクトリが/home/user/projectsである場合、data.txtというファイルを指定する際には、data.txtとだけ記述すれば、Pythonは自動的に/home/user/projects/data.txtを参照します。
カレントディレクトリを変更することも可能で、これにより異なる場所にあるファイルにアクセスすることができます。
カレントディレクトリを確認したり、変更したりすることは、ファイル操作を行う上で非常に重要なスキルです。
Pythonでは、osモジュールやpathlibモジュールを使用して、カレントディレクトリの取得や変更が簡単に行えます。
Pythonでカレントディレクトリのファイル一覧を取得する方法
Pythonでは、カレントディレクトリ内のファイル一覧を取得するために、主にosモジュール、pathlibモジュール、globモジュールを使用します。
それぞれの方法について詳しく見ていきましょう。
osモジュールを使った方法
os.listdir()の使い方
osモジュールのlistdir()関数を使用すると、指定したディレクトリ内のファイルとディレクトリの名前をリストとして取得できます。
カレントディレクトリを指定しない場合、デフォルトでカレントディレクトリの内容が取得されます。
import os
# カレントディレクトリのファイル一覧を取得
file_list = os.listdir()
print(file_list)['file1.txt', 'file2.py', 'directory1', 'image.png']ファイルとディレクトリの区別
os.listdir()で取得したリストには、ファイルとディレクトリが混在しています。
ファイルとディレクトリを区別するには、os.pathモジュールのisfile()やisdir()を使用します。
import os
# カレントディレクトリのファイルとディレクトリを区別
for item in os.listdir():
if os.path.isfile(item):
print(f"{item} はファイルです。")
elif os.path.isdir(item):
print(f"{item} はディレクトリです。")file1.txt はファイルです。
file2.py はファイルです。
directory1 はディレクトリです。
image.png はファイルです。pathlibモジュールを使った方法
Path.cwd()とiterdir()の使い方
pathlibモジュールは、オブジェクト指向のファイルシステムパスを扱うためのモジュールです。
Path.cwd()を使用してカレントディレクトリを取得し、iterdir()メソッドでその内容を反復処理できます。
from pathlib import Path
# カレントディレクトリのPathオブジェクトを取得
current_dir = Path.cwd()
# カレントディレクトリのファイル一覧を取得
for item in current_dir.iterdir():
print(item)file1.txt
file2.py
directory1
image.pngファイルのみを取得する方法
pathlibを使用して、ファイルのみを取得することも簡単です。
is_file()メソッドを使って、ファイルかどうかを判定できます。
from pathlib import Path
# カレントディレクトリのPathオブジェクトを取得
current_dir = Path.cwd()
# ファイルのみを取得
for item in current_dir.iterdir():
if item.is_file():
print(f"{item.name} はファイルです。")file1.txt はファイルです。
file2.py はファイルです。
image.png はファイルです。globモジュールを使った方法
ワイルドカードを使ったファイル検索
globモジュールを使用すると、ワイルドカードを使って特定のパターンにマッチするファイルを取得できます。
例えば、すべてのテキストファイルを取得する場合は以下のようにします。
import glob
# カレントディレクトリ内のすべてのテキストファイルを取得
text_files = glob.glob("*.txt")
print(text_files)['file1.txt']特定の拡張子のファイルを取得する方法
特定の拡張子のファイルを取得する場合も、globモジュールを使用することで簡単に実現できます。
例えば、すべてのPythonファイルを取得する場合は以下のようにします。
import glob
# カレントディレクトリ内のすべてのPythonファイルを取得
python_files = glob.glob("*.py")
print(python_files)['file2.py']ファイル一覧の表示方法
カレントディレクトリ内のファイル一覧を取得した後、これらのファイルを表示する方法はいくつかあります。
ここでは、シンプルな表示から詳細情報の表示まで、さまざまな方法を紹介します。
print()を使ったシンプルな表示
最も基本的な方法は、print()関数を使ってファイル名をそのまま表示することです。
以下のコードでは、osモジュールを使用してカレントディレクトリのファイル一覧を取得し、シンプルに表示しています。
import os
# カレントディレクトリのファイル一覧を取得
file_list = os.listdir()
# ファイル名を表示
print("ファイル一覧:")
print(file_list)ファイル一覧:
['file1.txt', 'file2.py', 'directory1', 'image.png']ファイル名を1行ずつ表示する方法
ファイル名を1行ずつ表示する場合は、ループを使用して各ファイル名を個別に出力します。
以下のコードでは、osモジュールを使ってファイル名を1行ずつ表示しています。
import os
# カレントディレクトリのファイル一覧を取得
file_list = os.listdir()
# ファイル名を1行ずつ表示
print("ファイル一覧:")
for file_name in file_list:
print(file_name)ファイル一覧:
file1.txt
file2.py
directory1
image.pngファイルの詳細情報を表示する方法
ファイルの詳細情報を表示するには、osモジュールやpathlibモジュールを使用して、ファイルサイズや作成日時、パーミッションなどの情報を取得します。
ファイルサイズや作成日時の取得
以下のコードでは、osモジュールを使用して、各ファイルのサイズと作成日時を表示します。
import os
import time
# カレントディレクトリのファイル一覧を取得
file_list = os.listdir()
# ファイルのサイズと作成日時を表示
print("ファイルの詳細情報:")
for file_name in file_list:
if os.path.isfile(file_name): # ファイルのみ対象
file_size = os.path.getsize(file_name) # ファイルサイズを取得
creation_time = time.ctime(os.path.getctime(file_name)) # 作成日時を取得
print(f"{file_name}: サイズ = {file_size} bytes, 作成日時 = {creation_time}")ファイルの詳細情報:
file1.txt: サイズ = 1024 bytes, 作成日時 = Mon Oct 23 12:34:56 2023
file2.py: サイズ = 2048 bytes, 作成日時 = Mon Oct 23 12:35:56 2023
image.png: サイズ = 5120 bytes, 作成日時 = Mon Oct 23 12:36:56 2023ファイルのパーミッションを表示する方法
ファイルのパーミッションを表示するには、osモジュールのstat()関数を使用します。
以下のコードでは、各ファイルのパーミッションを表示します。
import os
import stat
# カレントディレクトリのファイル一覧を取得
file_list = os.listdir()
# ファイルのパーミッションを表示
print("ファイルのパーミッション:")
for file_name in file_list:
if os.path.isfile(file_name): # ファイルのみ対象
permissions = stat.filemode(os.stat(file_name).st_mode) # パーミッションを取得
print(f"{file_name}: パーミッション = {permissions}")ファイルのパーミッション:
file1.txt: パーミッション = -rw-r--r--
file2.py: パーミッション = -rw-r--r--
image.png: パーミッション = -rw-r--r--これらの方法を使うことで、カレントディレクトリ内のファイルをさまざまな形式で表示し、必要な情報を得ることができます。
応用例
カレントディレクトリ内のファイル一覧を取得する基本的な方法を学んだ後、さらに応用的な操作を行うことができます。
ここでは、サブディレクトリ内のファイルを含めて一覧を取得する方法や、特定の条件でフィルタリングする方法、ファイル一覧をソートして表示する方法、そしてファイル一覧をテキストファイルに保存する方法について説明します。
サブディレクトリ内のファイルも含めて一覧を取得する方法
サブディレクトリ内のファイルも含めて一覧を取得するには、os.walk()を使用します。
この関数は、指定したディレクトリ内のすべてのファイルとサブディレクトリを再帰的に取得します。
import os
# カレントディレクトリ内のすべてのファイルを取得
for dirpath, dirnames, filenames in os.walk('.'):
for file_name in filenames:
print(os.path.join(dirpath, file_name))./file1.txt
./file2.py
./directory1/file3.txt
./directory1/image.png特定の条件でフィルタリングしてファイルを取得する方法
特定の条件でファイルをフィルタリングするには、条件文を使用してファイル名や拡張子をチェックします。
以下の例では、.txtファイルのみを取得しています。
import os
# カレントディレクトリ内の.txtファイルを取得
txt_files = [file for file in os.listdir() if file.endswith('.txt')]
print("テキストファイル一覧:")
print(txt_files)テキストファイル一覧:
['file1.txt', 'file3.txt']ファイル一覧をソートして表示する方法
ファイル一覧をソートして表示するには、sorted()関数を使用します。
以下のコードでは、ファイル名をアルファベット順にソートして表示しています。
import os
# カレントディレクトリのファイル一覧を取得
file_list = os.listdir()
# ファイル名をソート
sorted_file_list = sorted(file_list)
print("ソートされたファイル一覧:")
print(sorted_file_list)ソートされたファイル一覧:
['directory1', 'file1.txt', 'file2.py', 'image.png']ファイル一覧をテキストファイルに保存する方法
取得したファイル一覧をテキストファイルに保存するには、open()関数を使用してファイルを書き込みモードで開き、write()メソッドで内容を保存します。
以下のコードでは、カレントディレクトリのファイル一覧をfile_list.txtに保存しています。
import os
# カレントディレクトリのファイル一覧を取得
file_list = os.listdir()
# ファイル一覧をテキストファイルに保存
with open('file_list.txt', 'w', encoding='utf-8') as f:
for file_name in file_list:
f.write(file_name + '\n')
print("ファイル一覧を file_list.txt に保存しました。")ファイル一覧を file_list.txt に保存しました。これらの応用例を活用することで、Pythonを使ったファイル操作の幅が広がり、より効率的に作業を進めることができます。
まとめ
この記事では、Pythonを使用してカレントディレクトリのファイル一覧を取得し、表示する方法について詳しく解説しました。
具体的には、osモジュール、pathlibモジュール、globモジュールを用いたファイル一覧の取得方法や、ファイルの詳細情報を表示する方法、さらには応用的な操作としてサブディレクトリ内のファイルを含めた一覧取得や特定条件でのフィルタリング、ファイル一覧のソート、テキストファイルへの保存方法についても触れました。
これらの技術を活用することで、Pythonを使ったファイル操作の効率を高め、より柔軟なプログラムを作成することが可能になります。
ぜひ、実際のプロジェクトや日常のタスクにこれらの方法を取り入れてみてください。