【问题标题】:Python: json.load() error, every timePython:每次都出现 json.load() 错误
【发布时间】:2016-03-14 16:41:43
【问题描述】:

我生成了一个大的嵌套字典,然后将其保存为 json,然后我尝试加载它(以便我可以将更多数据附加到 json)。但是,我在以下代码行中经常遇到错误:

 # to save
 with open(json_path,'w') as f:
    json.dump(data, f, indent=3, sort_keys=True)

 # to load
 with open(json_path,'r') as f:
    data = json.load(f)

到目前为止我看到的错误:
ValueError:结束超出范围
ValueError: 期待对象 ...
ValueError:未终止的字符串...

但奇怪的是:如果我在异常后 pdb 并尝试再次加载 json,它每次都能正常工作!

【问题讨论】:

  • 是否涉及多个进程?您的磁盘是否遇到过任何问题?您似乎遇到了不完整的读取(或写入未完成)。
  • @FrEaKmAn:这很令人惊讶,因为json.dump() 正在生成 JSON。 JSON 似乎不完整
  • 你在使用线程吗?
  • 感谢Martijin,我意识到我正在使用线程,因此文件在另一个线程尝试打开它之前还没有完成写入。
  • 然后使用锁来协调读写。你读得太早了。

标签: python json python-2.7 io


【解决方案1】:

你读得太早了,写还没有完成。如果您使用单独的进程或线程,则需要确保序列化读取和写入操作。

在尝试读取之前使用锁确保写入操作完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多