Pythonのos
モジュールには、ディレクトリ内のファイル名を一覧表示するos.listdir()
という関数があります。しかし、この関数を使ってファイル名を取得すると、ファイル名の順番は保証されません。
例えば、あるディレクトリにn1.csv
, n2.csv
, n3.csv
, …, n13.csv
というファイルがあるとします。これらのファイル名をos.listdir()
で取得すると、['n1.csv', 'n10.csv', 'n11.csv', 'n12.csv', 'n13.csv', 'n2.csv', 'n3.csv', 'n4.csv', ...]
のようになり、数字の順番がバラバラになってしまいます。
そこで、ファイル名を自然順(n1, n2, n3, …, n9, n10, …)にソートする方法を紹介します。
import os
from natsort import natsorted
path = "./light"
files = os.listdir(path)
sorted_files = natsorted(files)
print(sorted_files)
このコードでは、まずos.listdir()
でファイル名のリストを取得し、次にnatsort
ライブラリのnatsorted()
関数を使ってファイル名を自然順にソートしています。
なお、natsort
ライブラリは標準ライブラリではないので、使用する前にpip install natsort
でインストールする必要があります。
以上が、Pythonでos.listdir()
を使ってファイルを順番に読み込む方法です。この方法を使えば、ファイル名が数字で順番になっている場合でも、適切にファイルを順番に処理することができます。