2017-06-08 1 views
0

私はコマンドラインを使ってChromeの設定を編集しようとしています。ファイルはJSONファイルで、私は以下のデータを編集したい:スクリプトでJSONファイルを変更するにはどうすればよいですか?

{"browser":{"enabled_labs_experiments":["[email protected]"],"last_redirect_origin":""}} 

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

を私はこれを達成するために、以前のsedコマンドを使用しますが、これはパイソンを使用して行うことができる方法を知りたいました。

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

私はjqを使用することはできません理由は、それはマックにネイティブではないとインストールが必要になることです。これは私が使用したコマンドでした。私はPythonでこれを行う方法を理解できません。

誰かが私にこれを助けたり、正しい方向に向けることができれば、本当に感謝します。

EDIT

これは私の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 '[email protected]' in jsonData['browser']['enabled_labs_experiments']: 
     print('Exist') 
    else: 
     jsonData['browser']['enabled_labs_experiments'] = ['[email protected]'] 
     print('Added') 

、私はファイルへの変更をコミットしたいと思います。

+0

'オープン(filename.readを())' を使用しないでください。代わりにコンテキストで使用します。私の答えを見てください。 – Rahul

+0

@Rahulありがとう!それは私が必要とするものを正確に行います。ただし、書式を少し変更します。書式設定をそのまま維持する方法はありますか?あなたが見てみたいと思ったらファイルはここにあります: https://drive.google.com/file/d/0B38bjAmXWElZM3VqUkFadldndlk/view?usp=sharing – LuciDroid

答えて

1
import json 
with open(path_to_json_file) as f: 
    data = f.read() 
d = json.loads(data) 
d["browser"]["enabled_labs_experiments"] = ["[email protected]"] 
with open(path_to_json_file, 'w') as f: 
    f.write(json.dumps(d)) 
3

なぜ正規表現を使用しているのですが、組み込みのjsonモジュールをPythonで使用していないのはなぜですか?

import json 
d = json.loads(path_to_your_file) 
d["browser"]["enabled_labs_experiments"] = ["[email protected]"] 
+0

@lucidroidこの答えに追加するには、jsonモジュールにも機能があります新しいファイルに書き込む(そして、明らかにファイルも編集する) - リンクされているドキュメントページe4c5の読み込みがある。 – swalladge

+0

@ e4c5 これは、私がbashスクリプトで達成しようとしていたときのことでした。今私はPythonスクリプトでこれを達成しようとしています。 – LuciDroid

+0

さて、ここに答えはあります:) – e4c5

関連する問題