我的程序有时会在json文件中的数据末尾写一个额外的]或}?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了我的程序有时会在json文件中的数据末尾写一个额外的]或}?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2835字,纯文字阅读大概需要5分钟。
内容图文
![我的程序有时会在json文件中的数据末尾写一个额外的]或}?](/upload/InfoBanner/zyjiaocheng/811/e43b7652f277479a88eaa268a99691bd.jpg)
我为自己写了一个笔记工具作为我的第一个程序.它实际上在大多数情况下工作得很好,但有时程序会在列表末尾写一个额外的]或}或存储在所述json文件中的dict.
它并不经常发生,我认为只有当我编写新的代码行或更改读取/写入所述文件的现有行时才会发生这种情况.我不是100%肯定,但这就是它的样子.
例如,我有一个存储在文件中的单个列表,并且我使用indent =“”标志来确保在写入文件时,如果我必须编辑所述文件,它对我来说更具可读性.有时在更改某些代码或添加代码后运行我的程序时,我收到一条错误,指出文件中有“额外数据”.
错误看起来像这样:
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 6 column 2 (char 5791)
并且错误的原因将是这样的:
[
"Help",
"DataTypes",
"test",
"Variables",
]] # the error would be cause by this extra ] at the end of the list
我不明白为什么程序有时会在我的json文件中的数据末尾添加和添加]或}?
当我打开文件或转储到文件时,我有什么问题吗?
以下是我用于打开文件和转储到文件的代码的一些部分:
path = "./NotesKeys/"
notebook = dict()
currentWorkingLib = ""
currentWorkingKeys = ""
#~~~~~~~~~~~~~~~~~~~< USE TO open all files in Directory >~~~~~~~~~~~~~~~~~~~
with open("%s%s"%(path,"list_of_all_filenames"), "r") as listall:
list_of_all_filenames = json.load(listall)
def openAllFiles(event=None):
global path
for filename in os.listdir(path):
with open(path+filename, "r+") as f:
notebook[filename] = json.load(f)
openAllFiles()
这是我如何更新文件中的数据.只需忽略e1Current,e1allcase,e2urrent,它们用于保存用户输入文件名(dict键)的小写字母在存储笔记的字典中的小写,并维护用户为显示列表估算的情况.这不应该与文件读写问题有关:
编辑:删除每个评论者请求的不相关代码.
#~~~~~~~~~~~~~~~~~~~< UPDATE selected_notes! >~~~~~~~~~~~~~~~~~~~
dict_to_be_updated = notebook[currentWorkingLib]
dict_to_be_updated[e1Current] = e2Current
with open("%s%s"%(path,currentWorkingLib),"r+") as working_temp_var:
json.dump(dict_to_be_updated, working_temp_var, indent = "")
我知道如何打开文件并使用数据以及如何将数据转储到所述文件,并根据新转储的数据更新程序变量中加载的内容.
我在这个过程中遗漏了哪些重要内容?我应该做些什么来确保json文件中的数据完整性吗?
解决方法:
您正在以读写模式打开文件,r:
with open("%s%s"%(path,currentWorkingLib),"r+") as working_temp_var:
这意味着您将写入已包含数据的文件,有时现有数据比您现在写入文件的数据长.这意味着你最终会得到一些尾随数据.
您可以通过将较短的演示字符串写入文件,然后使用r将较少的数据写入同一文件,然后再次读取来查看:
>>> with open('/tmp/demo', 'w') as init:
... init.write('The quick brown fox jumps over the lazy dog\n')
...
44
>>> with open('/tmp/demo', 'r+') as readwrite:
... readwrite.write("Monty Python's flying circus\n")
...
29
>>> with open('/tmp/demo', 'r') as result:
... print(result.read())
...
Monty Python's flying circus
r the lazy dog
不要这样做.使用w写入模式,以便首先截断文件:
with open("%s%s"%(path,currentWorkingLib), "w") as working_temp_var:
这可确保在编写新的JSON文档之前将文件缩减为0.
内容总结
以上是互联网集市为您收集整理的我的程序有时会在json文件中的数据末尾写一个额外的]或}?全部内容,希望文章能够帮你解决我的程序有时会在json文件中的数据末尾写一个额外的]或}?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。