如何从序列化文件加载json数据并在python 3中处理它们?

时间:2013-05-10 07:13:03

标签: python python-3.x

我正在尝试在python3(Mac OS X)和tkinter中创建一个程序。它需要一个增量id,datetime.now和第三个字符串作为变量。例如,

打开一个窗口,显示:id / date time /“hello world”。用户做出选择并按下保存按钮。输入被序列化为json并保存在文件中。

mytest = dict([('testId',testId), ('testDate',testDate), ('testStyle',testStyle)])
with open('data/test.txt', mode = 'a', encoding = 'utf-8') as myfile:
     json.dump(mytest, myfile, indent = 2)
myfile.close()

文件中的结果是

{
  "testStyle": "blabla", 
  "testId": "8", 
  "testDate": "2013-05-09 13:32"
}{
  "testDate": "2013-05-09 13:41", 
  "testId": "9", 
  "testStyle": "blabla"
}

作为一个python新手,我想加载文件数据并进行一些检查,例如“如果用户在2013-05-09再次输入,则会显示一条消息,说明您已经输入了今天的数据”。加载所有这些json数据的正确方法是什么?该列表将每天扩展并包含大量数据。

2 个答案:

答案 0 :(得分:1)

您可以存储一个字典列表,而不是直接存储字典,这些字典可以加载回列表中,该列表可以修改并附加到

import json
mytest1 = dict([('testId','testId1'), ('testDate','testDate1'), ('testStyle','testStyle1')])
json_values = []
json_values.append(mytest1)
s = json.dumps(json_values)
print(s)
json_values = None
mytest2 = dict([('testId','testId2'), ('testDate','testDate2'), ('testStyle','testStyle2')])
json_values = json.loads(s)
json_values.append(mytest2)
s = json.dumps(json_values)
print(s)

答案 1 :(得分:1)

您只需加载文件并解析它:

with open(path, mode="r", encoding="utf-8") as myfile:
    data = json.loads(myfile.read())

现在你可以随心所欲地使用data

如果您的文件非常大,那么我认为您应该使用正确的数据库。