<Python> ファイル名のリスト + 時刻でソート(その2)
検索したら過去に同じことをやってたが、せっかくなので、メモっておく。
ファイル名のリストlist
を時刻time
でソートsort
する。
In [4]: ls ドライブ C のボリューム ラベルは Windows8_OS です ボリューム シリアル番号は 1679-D852 です C:\msys64\home\Nekoyuki\tmp\tmp のディレクトリ 2018/02/24 11:16 <DIR> . 2018/02/24 11:16 <DIR> .. 2018/02/24 11:15 1 aaa.txt 2018/02/24 11:15 1 bbb.txt 2018/02/24 11:15 1 ccc.txt 2018/02/24 11:16 1 ddd.txt 2018/02/24 11:15 1 fff.txt 5 個のファイル 5 バイト 2 個のディレクトリ 67,190,915,072 バイトの空き領域 In [5]: import glob In [6]: import os In [7]: glob.glob('{}/*'.format(os.getcwd())) Out[7]: ['C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\aaa.txt', 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\bbb.txt', 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ccc.txt', 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ddd.txt', 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\fff.txt'] In [8]: lst = glob.glob('{}/*'.format(os.getcwd())) In [9]: [i for i in lst if 'ddd' in i] Out[9]: ['C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ddd.txt'] In [10]: [i for i in lst if 'ddd' in i][0] Out[10]: 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ddd.txt' In [11]: os.path.getctime([i for i in lst if 'ddd' in i][0]) Out[11]: 1519438562.2302387 In [12]: lst.sort(key=lambda x: os.path.getctime(x)) In [13]: lst Out[13]: ['C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\aaa.txt', 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\bbb.txt', 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ccc.txt', 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\fff.txt', 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ddd.txt'] In [14]: [ os.path.getctime(i) for i in lst] Out[14]: [1519438541.031442, 1519438544.5682108, 1519438548.668558, 1519438556.8538623, 1519438562.2302387] In [15]: [os.path.basename(i) for i in lst] Out[15]: ['aaa.txt', 'bbb.txt', 'ccc.txt', 'fff.txt', 'ddd.txt']