ソートされていないpathlib
モジュールのPathクラスのリストをソートしたかったので、作ってみました。
トイデータ生成
順番がバラバラなPathクラスのリストがある*1状況を想定します。
from pathlib import Path filelist = ["./dir/abb.ext", "./dir/aaa.ext", "./dir/bbb.ext", "./dir/aab.ext"] filepathes = [Path(elm) for elm in filelist]
>>> filepathes [WindowsPath('dir/abb.ext'), WindowsPath('dir/aaa.ext'), WindowsPath('dir/bbb.ext'), WindowsPath('dir/aab.ext')]
Pathクラスのリストを並べ替える関数
sorted
の引数key
に、ファイル名を取り出すようなlambda
を与えます。
import os def get_index_from_pathclass_by_filename(lst): return sorted(range(len(lst)), key=lambda k: os.path.split(lst[k])[1]) ... indices = get_index_from_pathclass_by_filename(filepathes) filepathes_sorted = [filepathes[k] for k in indices]
>>> indices [1, 3, 0, 2] >>> filepathes_sorted [WindowsPath('dir/aaa.ext'), WindowsPath('dir/aab.ext'), WindowsPath('dir/abb.ext'), WindowsPath('dir/bbb.ext')]
参考
*1:且、filelistがない状況