ファイル一覧を取得(イテレータ)
イテレータでファイル名一覧を取得するには、pathlibモジュールを使用します。
Pathオブジェクトの.iterdir()メソッドを使うことで、対象のディレクトリ中身の一覧が取得できます。
import pathlib
dir_path = "./folder1/"
file_names = pathlib.Path(dir_path).iterdir()
for i in file_names:
print(i)
実行結果
folder1/file1.txt folder1/folder2 folder1/file2.png folder1/file3.jpg
絶対パスで取得
pathlibモジュールの結果を絶対パスで返してもらうにはresolve()関数を使用します。
dir_path = "./folder1/"
file_names = pathlib.Path(dir_path).iterdir()
for i in file_names:
print(i.resolve())
実行結果
/work/folder1/file1.txt /work/folder1/folder2 /work/folder1/file2.png /work/folder1/file3.jpg
ファイル・ディレクトリ名だけを取得
pathlibモジュールで取得した結果には、パスが含まれていました。
パス部分が不要な場合には、nameを使用します。
dir_path = "./folder1/"
file_names = pathlib.Path(dir_path).iterdir()
for i in file_names:
print(i.name)
実行結果
file1.txt folder2 file2.png file3.jpg
拡張子なしの名前を取得
拡張子なしのファイル名を取得する場合は、stemを使用します。
dir_path = "./folder1/"
file_names = pathlib.Path(dir_path).iterdir()
for i in file_names:
print(i.stem)
実行結果
file1 folder2 file2 file3
拡張子を取得
拡張子だけを取得する場合は、suffixを使用します。
dir_path = "./folder1/"
file_names = pathlib.Path(dir_path).iterdir()
for i in file_names:
print(i.suffix)
実行結果
.txt .png .jpg
ファイルとディレクトリを判別
pathlibモジュールで取得した結果には、ファイルとディレクトリが混ざっていました。
ファイルとディレクトリを判別するにはis_file()またはis_dir()を使用します。
dir_path = "./folder1/"
file_names = pathlib.Path(dir_path).iterdir()
for i in file_names:
print(i)
print(f" file? : {i.is_file()}")
print(f" dir? : {i.is_dir()}")
実行結果
folder1/file1.txt file? : True dir? : False folder1/folder2 file? : False dir? : True folder1/file2.png file? : True dir? : False folder1/file3.jpg file? : True dir? : False
ファイル一覧を取得(リスト)
リストでファイル名一覧を取得するには、listdirモジュールを使用します。
import os
dir_path = "./folder1/"
file_names = os.listdir(dir_path)
print(file_names)
実行結果
['file1.txt', 'folder2', 'file2.png', 'file3.jpg']
まとめ
pythonでファイル名一覧を取得する方法を2種類紹介しました。
イテレータでファイル名一覧を取得するには、pathlibモジュールを使用し、
リストでファイル名一覧を取得するには、os.listdirモジュールを使用します。
参考文献
pathlib --- オブジェクト指向のファイルシステムパス
ソースコード: Lib/pathlib.py このモジュールはファイルシステムのパスを表すクラスを提供していて、様々なオペレーティングシステムについての適切な意味論をそれらのクラスに持たせています。 Path クラスは 純粋パス と 具象パス からなります。 純粋パスは I/O を伴わない純粋な計算操作を提供します。 ...
os --- 雑多なオペレーティングシステムインターフェース
ソースコード: Lib/os.py このモジュールは、 OS 依存の機能を利用するポータブルな方法を提供します。単純なファイルの読み書きについては、 open() を参照してください。パス操作については、 os.path モジュールを参照してください。コマンドラインに与えられたすべてのファイルから行を読み込んでいくには...
pathlib --- オブジェクト指向のファイルシステムパス
ソースコード: Lib/pathlib.py このモジュールはファイルシステムのパスを表すクラスを提供していて、様々なオペレーティングシステムについての適切な意味論をそれらのクラスに持たせています。 Path クラスは 純粋パス と 具象パス からなります。 純粋パスは I/O を伴わない純粋な計算操作を提供します。 ...
コメント