JSON形式での出力
辞書型のオブジェクトまたはそのリストをJSON形式で出力する.
JSONファイルに追記する
これに
これを追記して
これを作りたい.
一度ファイルを読み込んで書き足すのでも良いが,追記モードでファイルを終端からいじる方が早い気がする.
open(filename, 'ab+')
追記モード&バイナリ(ストリーム)モードでファイルを開く.
f.seek(offset, whence)
ファイルオブジェクトの位置を変更する.
位置は基準点にoffsetを足したものになる.
whence 0 (default): 先頭, 1: 現在位置, 2: 終端
seek(-1,2)では終端の一つ手前に移動する.
f.truncate(size=None)
ストリームのサイズ(ここではファイルイブジェクト)のサイズを指定されたsizeバイトに変更する.
sizeが指定されていない場合は現在位置に切り詰める.
f.write()
書き込み.
カンマを足して,追記したいコンテンツをjson.dumps()で追記して,リストの括弧を閉じる.
vimで開くとうまくいかなくなる問題
テストしたいことがあってvimで開いて編集したりすると,位置がずれて正しく追記できなくなってしまった.
上の方法を適用すると次のようになってしまう.
vimで開いても違いが無いので分かりにくいが,どうやら改行コードが入っているらしい.ということで次のように修正した.
f.read()で移動してしまうのでその都度位置を戻している.