Python逆引き:printするときにタイムスタンプを出したい

備忘録ヘッダ画像 逆引きソースコード

datetimeモジュールを使う方法

datetimeのnow()関数現在時刻を取得して、isoformat()関数で文字列化して出力する。

from datetime import datetime as dt

print(dt.now().isoformat() + "1番目の処理です")

これを実行すると以下のようになる。

2024-01-25T18:54:23.2070421番目の処理です

楽して既存のprint関数全部タイムスタンプが出るようにしたい

既に存在するprint関数すべてにいちいちdt.now().isoformat() を追加するのがめんどくさい時に私がやる小ネタ。
対象のファイル先頭でprint関数を上書きしてしまう。

from datetime import datetime as dt

# ファイル先頭でこんな感じでprint関数を上書きしてしまう
print_origin = print    # 元のprint関数を取っておく
def print(msg):
    print_origin(dt.now().isoformat() + msg)


# ↓既存のコード
print("1番目の処理です")
print("2番目の処理です")
print("3番目の処理です")
print("4番目の処理です")
print("5番目の処理です")

これを実行すると以下のように何もしていないprint関数にもタイムスタンプが付く。

2024-01-25T18:30:05.6077701番目の処理です
2024-01-25T18:30:05.6087692番目の処理です
2024-01-25T18:30:05.6097683番目の処理です
2024-01-25T18:30:05.6097684番目の処理です
2024-01-25T18:30:05.6107685番目の処理です

この方法はファイル単位でprint関数を上書きしているので、おおもとのprint関数をオーバーライドするような感覚で全ファイルまとめて変えたい場合は、多分標準ライブラリのロードをしているところをなんとかすると良いんじゃないかな。

タイトルとURLをコピーしました