前提・実現したいこと
jsonに上書きモードで出力したいのですが、以下のように追記になってしまいます。
追記は"a"を指定すると思うんですが、どうしてこのような挙動になるのかわかりません。
わかる方がいましたらコメントお願いします。
発生している問題・エラーメッセージ
{ "1624346513.9614556": { "time": "1624346513.9614556", "location": { "lat": 1.0, "lon": 3.0 } } }{ "1624346513.9614556": { "time": "1624346513.9614556", "location": { "lat": 1.0, "lon": 3.0 } }, "1624346514.963385": { "time": "1624346514.963385", "location": { "lat": 1.0, "lon": 3.0 } } }{ "1624346513.9614556": { "time": "1624346513.9614556", "location": { "lat": 1.0, "lon": 3.0 } }, "1624346514.963385": { "time": "1624346514.963385", "location": { "lat": 1.0, "lon": 3.0 } }, "1624346515.968867": { "time": "1624346515.968867", "location": { "lat": 1.0, "lon": 3.0 } } }
該当のソースコード
python
1import os 2import datetime 3import json 4import time 5import sys 6 7f = open('./sample.json', 'r+') 8count = 0 9 10try: 11 while True: 12 location = {"lat": 1.0, "lon": 3.0} 13 14 # データ生成 15 now = str(time.time()) 16 position = { 17 'time': now, 18 'location': location, 19 } 20 # .jsonに保存 21 if count != 0: 22 try: 23 position_json = json.load(f) 24 except Exception: 25 pass 26 else: 27 position_json={} 28 print(f'旧:{position_json}') 29 position_json[now]=position 30 print(f'新:{position_json}') 31 json.dump(position_json, f, indent=4) 32 elapsed_time=time.time()-start 33 count += 1 34except KeyboardInterrupt: 35 print('プログラムを終了します.') 36 f.close()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。