2016-04-22 7 views
1

jsonデータをファイルに保存するのに使うことができる単純な関数を作成しようとしています。私は現在このコードを持っていますPythonのテキストファイルをjsonデータで追加する

def data_store(key_id, key_info): 
    try: 
     with open('data.txt', 'a') as f: 
      data = json.load(f) 
      data[key_id] = key_info 
      json.dump(data, f) 
     pass 
    except Exception: 
     print("Error in data store") 

考えているのは、現在テキストファイル内のデータをロードしてから、jsonデータを作成または編集することです。だから、関数は、テキストファイル内の何読み込みます...

data_store("foo","bar") 

コードを実行し、その後、私はどちらか(「foo」が存在する場合)がありますどのような置き換えでJSONデータを追加したり、それがあれば、それを作成することができます存在しません

これは私にエラーを投げているが、任意のアイデア?

+0

あなたは 'data.txt'ファイルまたはそれから少なくともいくつかのデータを提供できますか? – Aurel

答えて

3

aモードは、同時に読み取りと書き込みの両方で機能しません。その代わり、use r+

with open('data.txt', 'r+') as f: 
    data = json.load(f) 
    data[key_id] = key_info 
    f.seek(0) 
    json.dump(data, f) 
    f.truncate() 

seek(0) callはここに戻って、ファイルの先頭にカーソルを移動します。 truncate()は、新しいファイルの内容が古いものよりも小さい場合に役立ちます。

さらに、avoid having a bare except clauseまたは/およびlog the error and the tracebackを正しく試してみてください。

+0

魅力のように動作します、ありがとう! –

関連する問題