我是一个Python新手,试图制作一个程序,通过编译一个表单来创建JSON列表,感谢tk库,并将其写在一个.json文件中。但是我使用了一个错误的逻辑,每次我重新运行程序,它都按照我的要求写了一个新的JSON,但是它删除了写在那个文件上的旧的JSON。
getdata = []
def submit():
name = name_var.get()
img = img_var.get()
description = description_var.get()
d = { "name": name, "image": img, "description": description}
getdata.append(d)
print("This is what's in the list", getdata)
name_var.set("")
img_var.set("")
description_var.set("")
with open("interest.json",'w', encoding='utf-8') as f:
json.dump(getdata,f,ensure_ascii=False, indent = 2)
下面是我尝试将已经存在的.json文件保存在Python变量中以检查它是否为空的测试的一部分。不知道对不对。我还想也许我必须处理两个.json文件。
with open("interest.json",'r') as filetoread:
transform_json = json.loads(filetoread)
if len(transform_json) < 1:
with open("interest.json",'w', encoding='utf-8') as f:
json.dump(getdata,f,ensure_ascii=False, indent = 2)
else:
# put a condiction to keep writing on the same file if that already exist
我希望我没有选择最糟糕的方式。谢谢你的帮助
2条答案
按热度按时间31moq8wy1#
你可以在这里参考答案:
Difference between modes a, a+, w, w+, and r+ in built-in open function?
"w"
会截断你的文件,你需要使用"a"
open('file.json', 'a')
68bkxrlz2#
使用您的代码,您可以沿着做一些事情打开您的文件,如果它存在,将json加载到
transform_json
中作为字典,否则什么都不做然后检查
transform_json
是否存在(首先检查文件是否存在)。如果它不存在,则创建文件并在其中添加值,否则,如果它存在(因此transform_json
在其中具有值),则将transform_json
与getdata
合并(以创建单个字典),然后在json文件中添加dump_it以覆盖先前存在的jsontry except
是在你的json文件无效的情况下(空文件或坏的json文件),然后你覆盖它,如果这不是你想要的行为(例如,如果json不正确,你想做一些事情,做它而不是pass
)