Pythonのglobでファイルを昇順で読み込む

glob.glob()でファイルを読み込んだとき、ファイル名が数字であっても昇順に読み込めないことがある。
例えば、数字の小さなファイル名順に読み込んで欲しいのに、実際は 1.jpg、10.jpg、2.jpg、20.jpg のように読み込んでしまう。
そんなときは、「natsort」というライブラリを使う。
ちなみに、Pythonの標準ライブラリではないのでプロンプトから pip でインストールして使ってください。
> pip install natsort
natsortライブラリ使用時
from natsort import natsorted
# photo フォルダに、1.jpg、10.jpg、2.jpg、20.jpg が入っているとします。
files = glob.glob("./photo" + "/*.jpg")
for i in natsorted(files):
print("file:", i)
>
file: ./photo\1.jpg
file: ./photo\2.jpg
file: ./photo\10.jpg
file: ./photo\20.jpg
読み込んだファイルは自然順( 1.jpg、2.jpg、10.jpg、20.jpg )になる。
glob.glob()の場合
# photo フォルダに、1.jpg、10.jpg、2.jpg、20.jpg が入っているとします。
files = glob.glob("./photo" + "/*.jpg")
for i in files:
print("file:", i)
>
file: ./photo\1.jpg
file: ./photo\10.jpg
file: ./photo\2.jpg
file: ./photo\20.jpg
読み込んだファイルが辞書順( 1.jpg、10.jpg、2.jpg、20.jpg )になる。
ディスカッション
コメント一覧
まだ、コメントがありません