例えば、1.jpg から 20.jpg までがランダム順であるディレクトリがあるとします。
path = "./directory"
file_names = os.listdir(path)
print(file_names)
['18.jpg','5.jpg','1.jpg','11.jpg','20.jpg','6.jpg','8.jpg','4.jpg','2.jpg','12.jpg','14.jpg','19.jpg','10.jpg','3.jpg','7.jpg','9.jpg','13.jpg','16.jpg','17.jpg']
これを sorted メソッドで並べ替えると、
sorted_file_names = sorted(file_names)
print(sorted_file_names)
['1.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg', '16.jpg', '17.jpg', '18.jpg', '19.jpg', '2.jpg', '20.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg']
というように大きい桁の数字を基準にソートされてしまいます。
1,2,3,4,5,6,7,8,9,10,11...と10進数で並べかえたいときは、natsort というライブラリが使えます。
pip install natsort
from natsort import natsorted
natsorted_file_names = natsorted(file_names)
print(sorted_file_names)
['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg', '16.jpg', '17.jpg', '18.jpg', '19.jpg', '20.jpg']
🐣
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com
Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。