【问题标题】:How to modify a JSON file in a script?如何在脚本中修改 JSON 文件?
【发布时间】:2017-11-09 15:46:13
【问题描述】:

我正在尝试使用命令行编辑 Chrome 的首选项。该文件是一个 JSON 文件,我想编辑下面的数据:

{"browser":{"last_redirect_origin":""}}

到

{"browser":{"enabled_labs_experiments":["ssl-version-max@2"],"last_redirect_origin":""}}

我之前使用 sed 命令来完成此操作,但想知道如何使用 python 来完成此操作。这是我使用的命令:

sed -i '.bak' -e 's|\(\"browser\"\):{\(\".*origin\":\"\"\)}|\1:{\"enabled_labs_experiments\":[\"ssl-version-max@2\"],\2}|' ~/Library/Application\ Support/Google/Chrome/Local\ State

我不能使用jq 的原因是它不是mac 原生的,需要安装。我无法理解如何用 python 做到这一点。

如果有人可以帮助我或为我指明正确的方向,我将不胜感激。

编辑

这就是我的 python 脚本的样子:

import json
jsonData = json.loads(open('/Users/username/Library/Application Support/Google/Chrome/Local state').read())
if 'enabled_labs_experiments' in jsonData['browser']:
    if 'ssl-version-max@2' in jsonData['browser']['enabled_labs_experiments']:
        print('Exist')
    else:
        jsonData['browser']['enabled_labs_experiments'] = ['ssl-version-max@2']
        print('Added')

更改完成后,我想将更改提交到文件中。

【问题讨论】:

  • 不要使用'open(filename.read())'。改为与上下文一起使用。看我的回答。
  • @Rahul 谢谢!它正是我需要的。但是,它会稍微改变格式。有没有办法保持格式不变?如果您想看一下,这里是文件:drive.google.com/file/d/0B38bjAmXWElZM3VqUkFadldndlk/…

标签: python json macos sed


【解决方案1】:

你为什么使用正则表达式为什么你不使用python中内置的json模块?

import json
d = json.loads(path_to_your_file)
d["browser"]["enabled_labs_experiments"] = ["ssl-version-max@2"]

【讨论】:

  • @lucidroid 添加到这个答案中,json 模块还具有写入新文件的功能(因此显然也编辑文件) - 阅读链接到的文档页面 e4c5。
  • @e4c5 那是我试图在 bash 脚本中实现它的时候。现在我正在尝试在 python 脚本中实现相同的目标。
  • 那么这就是答案:)
  • @e4c5 谢谢 :) 在帖子中添加了我的 python 脚本。不太确定这里出了什么问题。
  • 对不起,你问了一个问题,我回答了,其他用户也回答了。现在您的编辑使它成为一个完全不同的问题。所以你真的应该把它作为一个不同的问题发布。
【解决方案2】:
import json
with open(path_to_json_file) as f:
    data = f.read()
d = json.loads(data)
d["browser"]["enabled_labs_experiments"] = ["ssl-version-max@2"]
with open(path_to_json_file, 'w') as f:
    f.write(json.dumps(d))

【讨论】:

    猜你喜欢
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2019-05-08
    相关资源
    最近更新 更多