2017-04-26 8 views
0

私はリストを持っています。各要素はjsonファイルへのパスです。テキストファイルに書き込むために次のコードを使用しています。jsonファイルをテキストファイルに追加する

list=['C:/Users/JAYANTH/Desktop/datasets/580317556516483072/source- 
tweet/580317556516483072.json', 
'C:/Users/JAYANTH/Desktop/datasets/580317998147325952/source- 
tweet/580317998147325952.json', 
..........] 
file=open("abc.txt","a") 
for i in range(len(list)) 
    with open(list[i]) as f: 
     u=json.load(f) 
     s=json.dumps(u) 
     file.write(s) 
file.close() 

このコードは、jsonファイルのデータをtxtファイルに追加します。次のコードを使用して、同じファイルからデータを読み取るしようとしているとき:

with open('abc.txt','r') as f: 
    for each in f: 
     print(json.load(file)) 

を私は次のエラーを取得しています:

Traceback (most recent call last): 
    File "C:\Users\JAYANTH\Desktop\proj\apr25.py", line 15, in <module> 
    print(json.load(file)) 
    File "C:\Users\JAYANTH\Desktop\proj\lib\json\__init__.py", line 268, in 
    load 
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, 
    **kw) 
    File "C:\Users\JAYANTH\Desktop\proj\lib\json\__init__.py", line 319, in 
    loads 
    return _default_decoder.decode(s) 
    File "C:\Users\JAYANTH\Desktop\proj\lib\json\decoder.py", line 339, in 
    decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "C:\Users\JAYANTH\Desktop\proj\lib\json\decoder.py", line 357, in 
    raw_decode 
    raise JSONDecodeError("Expecting value", s, err.value) from None 
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 

私もjson.loadsを使用してみましたが、エラーを取得しています

Traceback (most recent call last): 
    File "C:\Users\JAYANTH\Desktop\proj\apr25.py", line 15, in <module> 
    print(json.loads(file)) 
    File "C:\Users\JAYANTH\Desktop\proj\lib\json\__init__.py", line 312, in 
    loads 
    s.__class__.__name__)) 
TypeError: the JSON object must be str, not 'TextIOWrapper' 

どうすればこの問題を解決できますか?

+0

あなたが読んだとき " abc.txt "、なぜあなたはforループを持っていますか?ただ印刷してください(json.load(f)) – Ashish

+0

なぜあなたはこれをしたいですか? 1つの外部リストを作成し、個々のjsonオブジェクトをこの出力リストに追加することができます。この出力リスト自体は、単一の有効なjsonオブジェクトになります。それからファイルに書き出します。 – roganjosh

答えて

0

jsonの連結は、json、完全停止ではありません。

[ 1, 2 , 
    { "a": "b" }, 
    3 ] 

と、このPythonオブジェクト与える:このファイルは有効なJSONではありません[1, 2, {'a': 'b'}, 3]

をしかし、これはもはや有効なJSONファイルである:それは無関係で2オブジェクトが含まれているため

[ 1, 2 , 
    { "a": "b" }, 
    3 ] 
[ 1, 2 , 
    { "a": "b" }, 
    3 ] 

あなたがそれを有効にするために外側のリストにあるすべてのものを同封する必要があります

[ 
[ 1, 2 , 
    { "a": "b" }, 
    3 ] 
, 
[ 1, 2 , 
    { "a": "b" }, 
    3 ] 
] 

ですから、コードを生成する必要があります:

file=open("abc.txt","a") 
file.write("[\n")   # start of a list 
first = True 
for i in range(len(list)) 
    if first: 
     first = False 
    else: 
     file.write(",\n") # add a separating comma before every element but the first one 
    with open(list[i]) as f: 
     u=json.load(f) 
     s=json.dumps(u) 
     file.write(s) 
file.write("]\n")   # terminate the list 

file.close()

関連する問題