2016-08-08 21 views
0

ich lerne, wie json in Python verwenden und habe dieses Problem gestoßen: Die nächsten beiden Absätze werden getrennt aus dem gleichen Verzeichnis auszuführen:json Fehler beim Laden von Datei (Python)

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 

Die erste Teil scheint gut zu laufen, aber wenn ich den zweiten Teil ausführe, tritt dieser Fehler auf:

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) 

Warum passiert das? Ich versuchte, x zu einem int und einem float zu ändern, derselbe Fehler tritt auf. Danke für jede Hilfe ^^.

Antwort

2

Der Fehler besteht darin, dass Sie den JSON zweimal ausgeben. Wenn Sie es also erneut laden wollen, ist es nicht gut ausgebildet. Versuchen Sie nur einmal zu dumpen und versuchen Sie es erneut. Oder vergewissern Sie sich, dass Ihr JSON in der von Ihnen gespeicherten Datei korrekt ist.

0

ich lerne, wie json in Python

Okay, hier zu verwenden sind einige Beispiele.

Schreiben in eine Datei

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

Lesen aus einer Datei

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