2016-08-08 5 views
0

私はPythonでJSONを使用する方法を学んでいると、この問題が発生しています 次の二つの段落が同じディレクトリから個別に実行されます。JSONエラー(パイソン)

x=[1,-1,[1]] 
import json 
f=open('states','w') 
f.close() 
f=open('states','r+') 
json.dump(x,f) 
json.dump(x,f) 
f.close() 

f=open('states','r+') 
y=json.load(f) 
f.close() 
print y 

最初一部は正常に動作していますが、2番目の部分を実行するとこのエラーが発生します。

ValueError        Traceback (most recent call last) 
<ipython-input-41-e06f9ba74fae> in <module>() 
    1 f=open('states','r+') 
----> 2 y=json.load(f) 
     3 f.close() 
     4 print y 

C:\Users\Yael\Downloads\WinPython-64bit-2.7.10.2\python-2.7.10.amd64\lib\json\__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw) 
    288   parse_float=parse_float, parse_int=parse_int, 
    289   parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, 
--> 290   **kw) 
    291 
    292 

C:\Users\Yael\Downloads\WinPython-64bit-2.7.10.2\python-2.7.10.amd64\lib\json\__init__.pyc in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw) 
    336    parse_int is None and parse_float is None and 
    337    parse_constant is None and object_pairs_hook is None and not kw): 
--> 338   return _default_decoder.decode(s) 
    339  if cls is None: 
    340   cls = JSONDecoder 

C:\Users\Yael\Downloads\WinPython-64bit-2.7.10.2\python-2.7.10.amd64\lib\json\decoder.pyc in decode(self, s, _w) 
    367   end = _w(s, end).end() 
    368   if end != len(s): 
--> 369    raise ValueError(errmsg("Extra data", s, end, len(s))) 
    370   return obj 
    371 

ValueError: Extra data: line 1 column 13 - line 1 column 25 (char 12 - 24) 

なぜこのようなことが起こりますか?私はintとfloatに同じエラーが発生するxを変更しようとしました。助けてくれてありがとう^^。

答えて

2

エラーは、JSONを2回ダンプすることです。だから、もう一度ロードしたいときは、うまく構成されていません。一度だけダンプして再試行してください。または、保存したファイルでJSONが正しいことを確認してください。

0

私は大丈夫PythonでJSONを使用する方法

を学んでいる、ここでいくつかの例があります。

書き込み読む

import json x=[1,-1,[1]] with open('states.txt', 'wb') as f: json.dump(x, f) 

ファイルへのファイル

import json 
with open('states.txt') as f: 
    y = json.load(f) 
    print(y) # [1, -1, [1]] 
から