如何在不删除python之前的信息的情况下保存json文件中的信息

2024-09-17 18:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python和kivy制作一个应用程序,允许用户为他们的葡萄糖读数创建一个新的条目。现在它保存到json文件中,但是另一个新条目删除了之前的数据。如何使每个条目单独保存以便可以访问用户历史记录的信息?在

.py文件

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.popup import Popup
from kivy.uix.button import Button
from kivy.graphics import Color, Rectangle
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import AsyncImage
from kivy.uix.label import Label
from kivy.properties import StringProperty, ListProperty
from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.textinput import TextInput
from kivy.network.urlrequest import UrlRequest
from kivy.storage.jsonstore import JsonStore
from os.path import join
from os.path import exists
from kivy.compat import iteritems
from kivy.storage import AbstractStore
from json import loads, dump
from kivy.config import Config
import os
import errno



class Phone(FloatLayout):
    def __init__(self, **kwargs):
        # make sure we aren't overriding any important functionality
        super(Phone, self).__init__(**kwargs)

    with self.canvas.before:
        Color(0, 1, 0, 1)  # green; colors range from 0-1 instead of 0-255
        self.rect = Rectangle(size=self.size, pos=self.pos)

    self.bind(size=self._update_rect, pos=self._update_rect)


    if not os.path.exists('hello.json'):
        with open('hello.json', 'wt') as inFile:
            inFile.write("")

    else:
        with open('hello.json') as inFile:
            try:
                data = Phone.load(self)
            except KeyError:
                data = []

def _update_rect(self, instance, value):
    self.rect.pos = instance.pos
    self.rect.size = instance.size

def product(self, instance):
    self.result.text = str(float(self.w.text) * 703/ (float(self.h.text) * float(self.h.text)))

def save(self):
    store = JsonStore('hello.json')
    name = self.n.text
    gender = self.g.text
    dtype = self.t.text
    height = self.h.text
    weight = self.w.text
    bmi = self.result.text
    medications = self.m.text
    insulin = self.ti.text
    store.put('profile', name=name, gender=gender, dtype=dtype, height=height, weight=weight, bmi=bmi, medications=medications, insulin=insulin)


def save_entry(self):
    time = self.gt.text
    glucose = self.gr.text
    carbs = self.c.text
    medications_taken = self.mt.text
    store.put('entry', time=time, glucose=glucose, carbs=carbs, medications_taken=medications_taken)



def load(self):
    store = JsonStore('hello.json')
    profile = store.get('profile')
    self.n.text = profile['name']
    self.g.text = profile['gender']
    self.t.text = profile['dtype']
    self.h.text = profile['height']
    self.w.text = profile['weight']
    self.result.text = profile['bmi']
    self.m.text = profile['medications']
    self.ti.text = profile['insulin']






presentation = Builder.load_file("main.kv")

class PhoneApp(App):
    def build(self):
        store = JsonStore('hello.json')

        return Phone()



if __name__ == '__main__':
    PhoneApp().run()

Tags: storetextfromposrectimportselfjson
1条回答
网友
1楼 · 发布于 2024-09-17 18:21:25

使用一些小的json数据库,比如this来保持它的干净。用法示例:

from tinydb import TinyDB, Query

db = TinyDB('./db.json')
User = Query()
db.insert({'name': 'John', 'age': 22})
result = db.search(User.name == 'John')
print result

相关问题 更多 >