K公園北ベンチで寝ていたら大雨が降ってくる。合羽を着込んで近所の団地一階自転車置き場、運動公園軒下を転々とする。 朝方になっても睡眠どころではないので、やけくそで北区中央図書館方面へ移動開始。足取りが重い。

中央公園(北)。かつて寝床として使っていたテーブル付きベンチの真横に大木の枝が落ちていた。 ここで寝ていなくてよかったと思いつつ、昨晩調達済みの野菜ジュース、おにぎり、アンパンを食す。

開館時刻と同時に北区中央図書館に入館。 今日は基本的に PC 席(カウンター)でのコード作業になった。

途中、サミット滝野川紅葉橋店に行ってオヤツ休憩。 図書館とサミットとの間の昭和的団地が取り壊されている真っ最中だった。坂下側から解体を進めているもよう。 明太子ポテトパン、特売のチョコチップメロンパン、あみあみスナックを買い、店内フードコートにて食す。

晩飯はサミット滝野川紅葉橋店で半額弁当やおかずを見繕って食べるのがいちばんコストパフォーマンスがよい。 今日はグリルチキン弁当、餃子、白飯をすべて割引価格で購入。

風呂は飛鳥山温泉(滝野川二丁目)。やはり電気バスが怖い。 壁の周りはビリビリするが、腰を据えるスペースは電気がそれほど来ていない?

入浴後、隣のランドリーで洗濯物。 脱衣所にあった 150 円洗濯機を使う手も十分有効だった。

23 時。中央公園(北)そばの謎児童公園に「帰還」し、眠りにつく。

読み物

  • 朝日新聞朝刊
  • 水道橋博士著『本業』

コード

YYYY-MM-DD-diary.mdtitle: から始まる行を検索して、日付を挿入するスクリプト。 作業は IPython 上で試行錯誤をしながら関数を定義していくやり方だ。

import calendar

def make_date(filename):
    year, month, day = int(filename[:4]), int(filename[5:7]), int(filename[8:10])
    return year, month, day, calendar.day_name[calendar.weekday(year, month, day)]

def get_date_text(filename):
    y, m, d, dow = make_date(filename)
    return f'{y}-{m:02d}-{d:02d} ({dow[:3]})'

import glob

def run():
    for i in glob.iglob('./*/*.md'):
        with open(i, 'r', encoding='utf8') as fin:
            with open(i + '.new', 'w', encoding='utf8', newline='') as fout:
                for line in fin:
                    print(re.sub(r'^title:', 'title: ' + get_date_text(i), line), end='', file=fout)
  • 曜日名は (Sun) などで表現したいので calendar.day_name の先頭 3 文字を採用する。
  • 私は自作プロジェクトのすべてにおいて、可能な限りテキストファイルを改行文字は LF で統一することにしている。 Windows で実行するときに注意がいるのは open() で出力するときだ。 明示的に newline を上のように指定することで、やっと期待通りの改行文字を印字する。
  • 関数 run() を例えばディレクトリー _posts/2018 に移動してから実行する。
    • 今見ると引数 encoding='utf8' がエレガントでない。なぜ明示的に与えねばならない?

なお YYYY-MM-DD-diary.md.new を元の YYYY-MM-DD-diary.md に上書きするのはシェル (bash) で行えばよい。 もちろん IPython で Python コードを書いてもよい。