背景
Python初心者です。
Pythonでディレクトリ内にある複数のテキストファイルを読み込むときに普段は以下のように書いていました。
#coding:utf-8
import glob
if __name__ == '__main__':
file_list = glob.glob('path/to/dir/*.txt')
for filename in file_list:
with open(filename, 'r') as input:
...
しかし、このままだと ls -U
を叩いたときと同じ順番(ソート無しの状態)でファイルが読み込まれてしまいます。
今回はファイル名でソートされた状態で順番に読み込みたかったので解決法を調べました。
解決策
file_listの部分を以下のように書くことで解決できました。
#coding:utf-8
import glob
if __name__ == '__main__':
file_list = sorted(glob.glob('path/to/dir/*.txt'))
for filename in file_list:
with open(filename, 'r') as input:
...
おまけ
他にも import os
してからsorted関数のkeyを os.path.getmtime
だとか os.path.getsize
にすると変更時刻順とかファイルサイズ順にソートして読み込ませることができるみたいです。
便利ですね。