<Python> ファイル名のリスト + 時刻でソート

ファイル名fileのリストlistで、時刻timeでソートsort

glob()とかos.listdir()はどうも順番が適当らしいので、うまくない。

いつものごとく、スタックさんに助けを乞う。

stackoverflow.com

このうち、ちと、リストの内包表記に代えてみた。

まずは、ファイル作成。

In [18]: os.mkdir('tmp')

In [19]: os.chdir('tmp')

In [21]: with open('aaa.txt', mode='w') as f:
    ...:     f.write('aaa')
    ...:     

In [22]: with open('bbb.txt', mode='w') as f:
    ...:     f.write('aaa')
    ...:     

In [23]: with open('ccc.txt', mode='w') as f:
    ...:     f.write('aaa')
    ...:     

In [27]: os.listdir('.')
Out[27]: ['aaa.txt', 'bbb.txt', 'ccc.txt']

で、ソート。

In [25]: sorted([ x for x in os.listdir('.') if os.path.isfile(x) ], key=os.path.getmtime)
Out[25]: ['aaa.txt', 'bbb.txt', 'ccc.txt']

sorted()keylambda関数をとれるらしいので、os.path.getmtimeを渡しているのがミソらしい。

ソートでちょっとお世話になったとこ。

akiyoko.hatenablog.jp