🗄️
【Python】ファイル一覧をsortして取得(glob, natsort)
結論
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