JSON文件I / O:额外数据错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON文件I / O:额外数据错误相关的知识,希望对你有一定的参考价值。
我目前正在学习Python。对于一个小项目,我正在编写一个脚本来转储和加载从Web中提取的JSON。每次拉数据后都需要不断更新文件,为此,我编写了以下代码。
with open(os.path.join(d,fname),'a+') as f:
try:
f.seek(0)
t = json.load(f)
for i in t:
tmp[i]=t[i]
except Exception as e:
print(e,"New File ",fname," is created in ",d)
f.truncate()
json.dump(tmp,f)
自从第一次运行该程序以来,我已经放置了一个try-catch块,该文件没有写入数据。
当我运行脚本时,它按预期工作,但是当我第四次运行相同的脚本时,它会给出EXTRA DATA异常。
额外数据:第1行第29245行(字符29244)新文件TSLA_dann创建于2017年12月20日
我不确定文件中是如何写入另一个字典的。请指导我一样。
答案
使用这样的代码编写另一个json几乎是不可能的。你的代码不好。你混合太多尝试打开,寻找和截断,错误的文件模式选择可能。我会教你一点点变得更好:
- 尝试应该只涵盖可能引起错误的内容。
- 寻求不需要总是寻求(0)是打开后。
- open(x,'a +)意味着追加到最后我想(我可能是错误的原因)。
- 使用空间。
- 耐心点。
问题可能是'a +'模式但是清洁代码并不重要:)
相信我,我写了25万行程序没有问题。
干净的代码作为一个很好的例子应该工作(我没有经过测试 - 你可以解决它,如果一个字母丢失或只是运行):
# read
file_path = os.path.join(d, fname)
with open(file_path, 'r') as f: # 'r' is read can be skipped
try:
t = json.load(f)
except Exception as e:
print('%s %s' % (e, file_path))
for i in t:
tmp[i] = t[i]
# write
with open(file_path, 'w') as f:
json.dump(tmp, f)
以上是关于JSON文件I / O:额外数据错误的主要内容,如果未能解决你的问题,请参考以下文章
Python json.load JSONDecodeError:尝试加载多个 json 字典时出现额外数据错误
能否使用require('.json')的方式加载大量JSON文件?
错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”