ファイルの日付時刻を変更する

Python スクリプトでファイルの日付を変更するメモ
os.utime で、ファイルのアクセス時刻と更新時刻を変更する。
作成時刻は、OS依存で Windows なら win32_setctime パッケージ

# -*- coding: UTF-8 -*-
import os
import pathlib
from datetime import datetime

p = pathlib.Path('/var/log/test.log')
print(p.stat())
# os.stat_result(st_mode=33206, st_ino=275282527223238120, st_dev=3390352220,
#                st_nlink=1, st_uid=0, st_gid=0, st_size=539,
#                st_atime=1603799568, st_mtime=1603799568, st_ctime=1603720044)
#
# st_atime : 最後にアクセスした時刻。
# st_mtime : 最後に変更された時刻。
# st_ctime : 作成時刻 Windows or メタデータが更新された時刻 UNIX

print(type(p.stat().st_atime))
# timestamp で float
print(p.stat().st_atime)

atimedate = datetime.fromtimestamp(p.stat().st_atime)
mtimedate = datetime.fromtimestamp(p.stat().st_mtime)
ctimedate = datetime.fromtimestamp(p.stat().st_ctime)

print('st_atime : %s' % atimedate)
print('st_mtime : %s' % mtimedate)
print('st_ctime : %s' % ctimedate)


# os.utime で、任意の時刻にファイル更新時刻を変更する
atime = datetime(2020, 10, 22, 18, 2, 12, 108924).timestamp()
mtime = datetime(2020, 10, 22, 15, 32, 53).timestamp()

os.utime('/var/log/test.log', (atime, mtime))


# Windows なら、作成日時は win32_setctime で
# 変更する  win32_setctime.setctime(file, 作成日時)