如何在脚本中修改JSON文件?

时间:2017-06-08 05:07:34

标签: python json macos sed

我正在尝试使用命令行编辑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的原因是它不是原生的,需要安装。我无法理解如何使用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')

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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))