【问题标题】:JSON saving duplicate infoJSON保存重复信息
【发布时间】:2015-06-03 13:22:46
【问题描述】:

我想使用 Python 来更新 JSON 数据。

import json
with open('./gui-config.json','r+') as f:
    js=json.load(f)
    js['configs'][0]['password']='123'
    f.seek(0)
    json.dump(js,f)

这是我的名为“gui-config.json”的测试 JSON:

{
"configs" : [
  {
"server" : "US.SSSERVER.PW",
"server_port" : 8989,
"password" : "73221446",
"method" : "aes-256-cfb",
"remarks" : ""}

],
"index" : 0,
"global" : false,
"enabled" : true,
"shareOverLan" : false,
"isDefault" : false,
"localPort" : 1080}

运行结束,“gui-config.json”为:

{
  "localPort": 1080,
  "isDefault": false,
  "configs": [
    {
      "server_port": 8989,
      "method": "aes-256-cfb",
      "remarks": "",
      "password": "123",
      "server": "US.SSSERVER.PW"
    }
  ],
  "global": false,
  "enabled": true,
  "index": 0,
  "shareOverLan": false
 }
   sDefault": false,
   "localPort" : 1080
 }

"sDefault" : false, "localPort" : 1080} 是重复信息。为什么会这样? 我可以一次打开完成这个操作吗?

【问题讨论】:

  • 为什么不关闭文件再打开写入呢?通过寻求 0 和转储,我不认为“整个”文件被覆盖。它只会从那个位置开始写入,但是一旦变量“js”中的内容用完,文件的其余部分将保持原样。
  • "Python 保存 JSON 数据错误。"当您开始寻找正常问题而不是立即指责您正在使用的语言和平台时,您的调试会变得更好。你真的认为 Python 的稳定版本会完全破坏 JSON 支持,而我们都不会注意到,开发人员也不会修复它吗?

标签: python json


【解决方案1】:
import json
with open('./gui-config.json','r') as f:
    js=json.load(f)
    js['configs'][0]['password']='123'

with open('./gui-config.json','w') as f:
    js.dumps(js, f)

我认为这是一种更简洁、更易于遵循的方法。再次打开文件进行写入会清除现有内容(您不必担心,因为您已经在内存中拥有它的副本)。

【讨论】:

  • 第一次不需要以r+打开文件。它可能只是常规的可读模式。
  • 进行了更改。谢谢你:)
猜你喜欢
  • 1970-01-01
  • 2011-03-17
  • 2019-07-21
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 2017-05-23
相关资源
最近更新 更多