qshinoの日記

Powershell関係と徒然なこと

ctime of a file, directory

python, ファイルの更新時刻取得

更新時刻等取得方法。どれでもほぼ同等

  1. os.path.getctime(filename)
  2. os.stat(filename).st_atime
  3. pathlib.Path(filename).stat().st_mtime
from datetime.datetime import fromtimestamp
from os.path import getctime
from functools import cmp_to_key


# filename to datetime of ctime
def poi(filename):
  ctime = getctime(filename)
  dt = fromtimestamp( ctime )
  return dt

def tscmp(a,b): # 比較関数
  return a[1] - b[1]

def sortfiles(files):
  m = map( lambda x: [x,getctime(x)], files)
  s = sorted(  m, key= cmp_to_key(lambda a,b: a[1] - b[1] ))

# or

  t = sorted(m, key=lambda a: a[1])

  for x in s:
    print(x[0],x[1])

  return s

補足

python 3系列から、sorted等のcmp キーワード引数がなくなり、ソートキーを返却するkey関数に変更された。cmp関数を使う場合、functoolsのcmp_to_keyを使う。

なお、性能面では使い方次第で、キーを返却する方が毎回外部関数で比較するより効率的。