2013-05-13 8 views
6

verrohrt ich die Ausgabe von meinem Python-Skript, das output.txt mit Live-Twitter-Tweets auf eine Datei zugreift:Lesen von Text-Datei wieder in einem Wörterbuch mit json.loads

$python scriptTweet.py > output.txt 

Ursprünglich die Ausgabe vom Skript zurück war ein Wörterbuch, das in eine Textdatei geschrieben wurde.

Jetzt möchte ich die output.txt-Datei verwenden, um auf Tweets zuzugreifen, die darin gespeichert sind. Aber wenn ich diesen Code verwenden, den Text in output.txt in einen Python-Wörterbuch mit json.loads() zu analysieren:

tweetfile = open("output.txt") 
pyresponse = json.loads('tweetfile.read()') 
print type(pyresponse) 

Dieser Fehler erscheint:

pyresponse = json.loads('tweetfile.read()') 
    File "C:\Python27\lib\json\__init__.py", line 326, in loads 
    return _default_decoder.decode(s) 
    File "C:\Python27\lib\json\decoder.py", line 366, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "C:\Python27\lib\json\decoder.py", line 384, in raw_decode 
    raise ValueError("No JSON object could be decoded") 
ValueError: No JSON object could be decoded 

Wie soll ich konvertiere den Inhalt der Datei output.txt wieder in ein Wörterbuch?

Antwort

9

'tweetfile.read()' ist eine Zeichenfolge, wie Sie es sehen. Sie möchten diese Funktion aufzurufen:

with open("output.txt") as tweetfile: 
    pyresponse = json.loads(tweetfile.read()) 

oder direkt json.load mit lesen und jsonread auf dem tweetfile selbst lassen:

with open("output.txt") as tweetfile: 
    pyresponse = json.load(tweetfile) 
+6

Oder verwenden 'json.load (tweetfile)'. Warum hast du einen Hund und bellst dich? –

+0

@eumiro Ich habe den Code aktualisiert. Dieser Fehler taucht auf: Datei "getTweet.py", Zeile 24, in pyresponse = json.load (tweetfile) Datei "C: \ Python27 \ lib \ json \ __ init__.py", Zeile 278, laden * * kw) Datei "C: \ Python27 \ lib \ json \ __ init__.py", Zeile 326, in Lasten return _default_decoder.decode (s) Datei "C: \ Python27 \ lib \ json \ decoder.py", Zeile 369, in Dekodierung raise ValueError (errmsg ("Zusätzliche Daten", s, Ende, len (s))) ValueError: Zusätzliche Daten: Zeile 2 Spalte 1 - Zeile 21 Spalte 1 (Char 124 - 56517) – learner123

+0

@techfreak - poste ein Beispiel deiner 'output.txt' - es könnte ein Problem geben. – eumiro

Verwandte Themen