skip to content
barorin&?

globで集めたファイル名を昇順で取り出すライブラリnatsort

/ 1 min read

問題

次のようなフォルダから単純に glob で集めた files を for ループで取り出しても、以下のように昇順で取り出してはくれません。
/フォルダ
├2022-04.txt
├2022-05.txt
└2022-06.txt

files = glob.glob('./*.txt')
for file in files:
    print(file)

# Output
# ./2022-05.txt
# ./2022-06.txt
# ./2022-04.txt

解決方法

そこで natsort というライブラリを使うときれいに取り出せます。

# pip install natsort

from natsort import natsorted

files = glob.glob('./*.txt')
for file in natsorted(files):
    print(file)

# Output
# ./2022-04.txt
# ./2022-05.txt
# ./2022-06.txt