Python | ファイルの最終アクセス日時と最終更新日時を書き換える方法

2023-02-26Python ファイル・ディレクトリ,Python

Python | ファイルの最終アクセス日時と最終更新日時を書き換える方法

Pythonで「os」モジュールのutime()関数を使ってファイルの最終アクセス日時と最終更新日時を書き換える方法とサンプルコードを紹介しています。

確認環境

Windows11 ローカル
Python python-3.11.1

ファイルの最終アクセス日時と最終更新日時を書き換える

Pythonでファイルの更新日時を書き換えるには「os」モジュールのutime()関数を利用して実装すること可能です。
utime()関数は第一引数に変更するファイルのパス、第二引数に新しい最終アクセス時間と最終更新日をタイムスタンプにして、タプル型のデータで指定します。

ファイルが存在しない場合は「FileNotFoundError」が発生します。

サンプルでは「datetime」モジュールのtimestamp()関数を使って指定する時間をタイムスタンプに変換しています。
その後、utime()関数でファイルの最終アクセス日時と最終更新日時を書き換えています。

import os
import datetime

file = "test.txt"

# 新しい更新日時をタイムスタンプにする
set_time = datetime.datetime(2023, 1, 10, 10, 10, 10).timestamp()

# ファイルの最終アクセス日時と最終更新日を書き換える
os.utime(file, (set_time, set_time))

# ファイルの最終アクセス日時と最終更新日は 2023/01/10 10:10:10 になる

文字列型の時間指定でファイルの最終アクセス日時と最終更新日を書き換えるには、strptime()関数でdatetime型に変換してからtimestamp()でタイムスタンプに変換します。

import os
import datetime

file = "test.txt"

# 新しい更新日時をタイムスタンプにする(文字列型)
set_time = datetime.datetime.strptime(
	"2023-01-10 10:10:10", "%Y-%m-%d %H:%M:%S"
).timestamp()

# ファイルの最終アクセス日時と最終更新日を書き換える
os.utime(file, (set_time, set_time))

# ファイルの最終アクセス日時と最終更新日は 2023/01/10 10:10:10 になる