如何将信息作为数组python保存到json

Posted

技术标签:

【中文标题】如何将信息作为数组python保存到json【英文标题】:How to save information to json as array python 【发布时间】:2016-04-22 19:09:14 【问题描述】:

我正在用 python ad kivy 制作一个应用程序,让用户输入时间、血糖、碳水化合物和服用的药物。目前,我将用户输入的信息保存到 TinyDB json 文件中,并且不会删除以前的信息。但是我不知道如何检索特定的信息。我想知道是否有一种方法可以将 json 文件保存为数组,或者可以轻松检索特定信息,例如用户最后的葡萄糖条目。这是我当前的代码。

.py

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


    db = TinyDB('entry.json')
    User = Query()
    db.insert('time': time, 'glucose': glucose, 'carbs': carbs, 'medications_taken': medications_taken)


def retrieve(self):
    db = TinyDB('entry.json')
    User = Query()
    with open('entry.json', 'r') as f:
        f = db.search(Query().time != 0)[0]
        print f

.kv

<Phone>:

gt: _time
gr: _glucose_reading
c: _food
mt: _meds_taken

       Screen:
            name: 'new_entry'                
            GridLayout:
                cols:1
                BoxLayout:
                    Label:
                        size_hint_x: 0.22
                        bold: True
                        markup: True
                        text: '[size=40][color=0000ff]Time[/color][/size]'
                    TextInput:
                        id: _time
                        hint_text: 'Current Time'

                BoxLayout:
                    Label:
                        size_hint_x: 0.22
                        bold: True
                        markup: True
                        text: '[size=28][color=0000ff]Blood Sugar (mg/dL)[/color][/size]'
                    TextInput:
                        id: _glucose_reading
                        hint_text: 'Current Blood Sugar'

                BoxLayout:
                    Label:
                        size_hint_x: 0.22
                        bold: True
                        markup: True
                        text: '[size=40][color=0000ff]Carbs[/color][/size]'
                    TextInput:
                        id: _food
                        hint_text: 'Total Carbs for meal'

                BoxLayout:
                    Label:
                        size_hint_x: 0.22
                        bold: True
                        markup: True
                        text: '[size=30][color=0000ff]Medications Taken[/color][/size]'
                    TextInput:
                        id: _meds_taken
                        hint_text: 'Please Enter Any Medications Taken'
                    Button:
                        size_hint_x: 0.15
                        text: 'Save'
                        on_press: root.save_entry()

                    Button:
                        size_hint_x: 0.15
                        text: 'Retrieve'
                        on_press: root.retrieve()

【问题讨论】:

【参考方案1】:

retrieve 中的 with 似乎是多余的。也许这种形式会更好:

def retrieve(self):
    db = TinyDB('entry.json')
    f = db.search(Query().time != 0)[0]
    print f

您要求一种简单的方法来检索用户最近的葡萄糖值。试试这个:

f = db.search(Query().time != 0)[-1]['glucose']
print f

f = db.search(Query().time != 0)[-1]
print f['glucose']

检索用户最近的五个葡萄糖值:

f=db.search(Query().time != 0)[-5:]
print ', '.join(str(x['glucose']) for x in f)

【讨论】:

我如何将最后一个附加到标签(self.fe.text)而不是打印? 我不熟悉kivy,所以不能肯定。也许用return f['glucose']替换print f['glucose'] 其实只是用普通的打印功能没有报错但是什么都没有打印 我想通了。它只是self.fes.text = ', '.join(str(x['Glucose']) for x in f)

以上是关于如何将信息作为数组python保存到json的主要内容,如果未能解决你的问题,请参考以下文章

如何将各种尺寸的数组的Python列表保存到mat文件[重复]

如何在python中将数组保存到文本文件?

C#怎样将数组作为文件流保存起来

4Python将采集的信息保存

将数据保存为 *.dat 文件?

如何将信息保存到python中的文件? (简单编程)[关闭]