概要
私は1年に1度markdown形式のメモ用ファイルをたくさん作っている。これを日常のあらゆるメモとして使用している。自動生成するためのコードを書き直したので忘れないように記録しておく。
作るもの
以下のような構成のmarkdownファイルを作る。
.
└── 2023
├── 1
│ ├ 2-8.md
│ ├ 9-15.md
│ ├ 16-22.md
│ ├ 23-29.md
│ └ 30-5.md
└── 2
│ ├ 6-12.md
│ ├ ...
│ ...
│
└── 3
└── 4
└── ...
生成時点でファイルごとに以下のような内容を書いておく。
# 1/2 (月)
# 1/3 (火)
# 1/4 (水)
# 1/5 (木)
# 1/6 (金)
# 1/7 (土)
# 1/8 (日)
# メモ
それぞれの日付が書かれた段落内には、「その日の予定」「その日のメモ」「日々の振り返り」等好きなことを書く。メモを書く場所に迷ったらその日付にひとまず記載しておく。だいたいほぼ日手帳として使う。
使用例
# 2/2 (木)
* 19:00より○○と会う
* 燃えるゴミ出すこと
## タスク1
#### サブタスク
* ...
* ...
## 読書記録
...
1週間ごとに1ファイルとしている。スケールを大きくしすぎると(1年で1ファイルとか)だんだん散らかってくるし、あまりスケールが小さくても(1日ごとに1ファイルとか)不便なので1週間区切りとしている。
Pythonで作ろう
使うもの
open
ファイル書くやつ。with
を使うとcloseの手間が省けて便利。
with open("dir/filename", "w", encoding="utf-8") as f:
f.write("hello, world!\n")
日本語を書く時はencoding="utf-8"
を指定しておこう
os
モジュール
ディレクトリを作る時に使うやつ。
import os
dir = "src/1/2/"
os.makedirs(dir, exist_ok=True)
os.makedirs
なら深い階層まで一気に生成できる。また、exist_ok=True
オプションを付けることですでにそのディレクトリが存在してもエラーを吐かなくなる。
datetime.date
モジュール
日付操作に使う。
import datetime
date_newyear = datetime.date.fromisoformat('2023-01-01')
date_today = datetime.date.today()
date_tommorow = date_today + datetime.timedelta(days=1)
コード全文
import os
import datetime
date = datetime.date.fromisoformat('2023-01-02')
while date.year == 2023:
dir = f"{date.year}/{date.month}"
os.makedirs(dir, exist_ok=True)
date_weekend = date + datetime.timedelta(days=6)
weekday = ["月", "火", "水", "木", "金", "土", "日"]
with open(f"{dir}/{date.day}-{date_weekend.day}.md", "w", encoding="utf-8") as f:
for i in range(7):
f.write(f"# {date.month}/{date.day} ({weekday[i]})\n\n")
date += datetime.timedelta(days=1)
f.write("# メモ\n\n")
以上です。