2017-02-06 21 views
0

JSONオブジェクトを既存のJSONオブジェクトにテキストファイルで追加しようとしています。私の最初のデータセットはこれが好きです。私が実行しようとするとPython - 既存のJSONオブジェクトにJSONオブジェクトを追加する

data = [ 
     { 
      "username": "Mike", 
      "code": "12345", 
      "city": "NYC" 
     }, 
     { 
      "username": "Kelly", 
      "code": "56789", 
      "city": "NYC" 
     } 
     ] 

data = [ 
     { 
      "username": "Mike", 
      "code": "12345", 
      "city": "NYC" 
     } 
     ] 

それから私は、JSONの別のセットを追加する必要があるが、このように見えるように、既存のファイルにオブジェクト

with open('data2.txt', 'a') as outfile: 
    json.dump(data, outfile) 

私のデータはではありません正しいJSON形式。テキストファイルに正しく追加する方法を教えてください。

+0

テキストファイルに追加するだけで、何らかの形でjson形式であることがわかるとは限りません。ファイルを読み込んでjsonに変換してから、値を追加して書き直す必要があります – Falmarri

答えて

0

最初にファイルからデータを読み取ります。

with open('data2.txt') as data_file:  
    old_data = json.load(data_file) 

次に、ファイル全体を書き換えるそして、古いデータ

data = old_data + data 

にデータを追加します。

with open('data2.txt', 'w') as outfile: 
    json.dump(data, outfile) 
0

これはおそらく、あなたの要求を処理するための最もPython的な方法ではありませんが、私はそれはあなたが発生する可能性があるいくつかの問題を助けることを願っています。コードをより堅牢にするために、ロードとダンプをtry-exceptブレスレットにラップしました。 自分自身にとって最大の驚きは、出力ファイルとしてファイルを開くときには 'a'を使用せず、代わりに 'w'を使用することでした。ただし、すでに "data.append(data1)"という行に追加しておくと、ファイルにダンプするときに2回追加する必要はありません。

data = [{"username": "Mike", "code": "12345", "city": "NYC"}] 
data1 = {"username": "Kelly", "code": "56789", "city": "NYC"} 
data2 = {"username": "Bob", "code": "12222", "city": "NYC"} 

try: 
    with open('append.txt', 'r') as fin: 
     data = json.load(fin) 
except FileNotFoundError as exc: 
    pass 

try: 
    if data: 
     data.append(data1) 
     with open('append.txt', 'w') as fout: 
      json.dump(data, fout) 
except UnboundLocalError as exc: 
    with open('append.txt', 'w') as fout: 
     json.dump(data, fout) 
関連する問題