ファイル名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