kivy中的json存储值未正确更新
我在一个Json文件里插入一个值,先是通过当前代码里的一个函数,然后又通过另一个代码里的函数来插入。但是,当我第二次更新这个值的时候,它会把我第一次设置的值重置掉。
我相信你看下面的示例代码会更明白:
我有两个文件:
- jsonstore.py - 这个文件会导入第二个文件 importedmodule
- importedmodule.py
请看下面两个文件的代码。
jsonstore.py
from kivy.storage.jsonstore import JsonStore
import importedmodule as jb
JsonFileName = 'a.json'
store = JsonStore(JsonFileName)
def hello():
store.put('ten', v=int(10))
hello()
jb.hello()
importedmodule.py
from kivy.storage.jsonstore import JsonStore
JsonFileName = 'a.json'
store = JsonStore(JsonFileName)
def hello():
store.put('twenty', v=int(20))
我希望当我运行第一个文件的代码,也就是 jsonstore.py 时,它的输出应该是:
{"twenty": {"v": 20}, "ten": {"v": 10}}
但是我得到的输出是
{"twenty": {"v": 20}, "ten": {"v": 0}}
我不确定为什么它没有把值 ten 更新为 10。我不知道哪里出错了,或者我做错了什么。有人能帮我或者给点建议吗?
1 个回答
3
你正在创建两个 JsonStore
。这就像在两个不同的编辑器中打开同一个文本文件,然后对每个文件进行修改并保存 - 只有一个文件会被保存,另一个会被覆盖。建议你在每个方法中使用同一个存储。
jsonstore.py
from kivy.storage.jsonstore import JsonStore
import importedmodule as jb
JsonFileName = 'a.json'
store = JsonStore(JsonFileName)
def hello(s):
s.put('ten', v=int(10))
hello(store)
jb.hello(store)
importedmodule.py
def hello(s):
s.put('twenty', v=int(20))