1
1

More than 1 year has passed since last update.

[python] 簡単にJSON形式でファイルの使用記録を残す

Last updated at Posted at 2022-11-05

はじめに

自分が作ったプログラムの使用記録を残したい
よって簡単で扱いやすい形式で保存しておきたい
よって今回JSON形式で使用記録、すなわちLogを記録しておく

環境

windows 10
python version: 3.7.8

Code

import json
import datetime
import os
import getpass


def Save_Log():
    data = {
        'name': getpass.getuser(),
        'date': str(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')),
    }

    log_json = ""
    if os.path.exists('./log.json'):
        try:
            json_file = open('./log.json', 'r')
            log_json = json.load(json_file)
            log_json["count"] += 1
            log_json["log"][log_json["count"]] = data
            json_file.close()
        except Exception as e:
            print(e)
    else:
        log_json = {"log": {
            "1": data
        },
            "count": 1}

    # print(log_json)
    json_write = open('./log.json', 'w')
    json.dump(log_json, json_write, indent=4,  separators=(',', ': '))

    json_write.close()


if __name__ == '__main__':
    Save_Log()

log.json
{
    "log": {
        "1": {
            "name": "tanaka",
            "date": "2022/11/05 22:43:02"
        },
        "2": {
            "name": "tanaka",
            "date": "2022/11/05 22:43:36"
        },
        "3": {
            "name": "tanaka",
            "date": "2022/11/05 22:43:37"
        },
        "4": {
            "name": "tanaka",
            "date": "2022/11/05 22:44:30"
        },
        "5": {
            "name": "tanaka",
            "date": "2022/11/05 22:44:31"
        }
    },
    "count": 5
}

ファイルの実行の度に実行者の名前と時間が記録される
情報のuid的な存在は今回はcountとして順番に番号をつけた。
従業員番号もしくはuuidなどをつけても良さそう

まとめ

プログラムを実行するときに一緒に実行するようにセットした。JSONファイルは普通の人なら開こうと思わないので、自分用の簡易データとしては扱いやすい。
osなどのモジュールを利用すると、より個人的なパソコン情報を保存に活かせる(あまりいいことではないですが、、、)

関連

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1