🗄️

【Python】ファイル一覧をsortして取得(glob, natsort)

2022/12/29に公開

結論

python

import glob
from natsort import natsorted

def get_sort_files(path):
    """
    usage:
    (i) :get_sort_files('dir/*')
    (ii):get_sort_files('dir/*.txt')
    """
    files = glob.glob(path)
    return natsorted(files)

bash

(venv)$ pip install natsort

内容

ディレクトリのファイル名をsortして表示することを考えます。

glob

ファイル名の取得はglob.globで行うことができます。

入力は*.txtのような正規表現でも扱えます。

natsort

pythonのsortedでは文字列の数字を含むsortが期待と異なる場合があります。

In : a = ['10.txt','2.txt','100.txt']
In : print(sorted(a))
['10.txt', '100.txt', '2.txt']

そこでnatsortを使うと、文字列内の数字を認識してsortしてくれます。

In : from natsort import natsorted
In : print(natsorted(a))
['2.txt', '10.txt', '100.txt']

インストールの方法は以下です。
bash

(venv)$ pip install natsort

Discussion