2017-04-13 5 views
0

Ich erstelle zwei Dateien mit Python-Skript, erste Datei ist JSON und zweite ist HTML-Datei, meine unten erstellt JSON-Datei, aber beim Erstellen von HTML-Datei bekomme ich Fehler. Könnte jemand mir helfen, das Problem zu lösen? Ich bin auf Python-Skript neu, so wäre es wirklich zu schätzen, wenn Sie irgendeine LösungFehler beim Erstellen mehrerer Dateien in Python

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

import sys 
import json 


JsonResponse = '[{"status": "active", "due_date": null, "group": "later", "task_id": 73286}]' 


def create(JsonResponse): 
    print JsonResponse 
    print 'creating new file' 
    try: 
     jsonFile = 'testFile.json' 
     file = open(jsonFile, 'w') 
     file.write(JsonResponse) 
     file.close() 
     with open('testFile.json') as json_data: 
      infoFromJson = json.load(json_data) 
      print infoFromJson 
      htmlReportFile = 'Report.html' 
      htmlfile = open(htmlReportFile, 'w') 
      htmlfile.write(infoFromJson) 
      htmlfile.close() 
    except: 
     print 'error occured' 
     sys.exit(0) 


create(JsonResponse) 

ich unten Online-Python-Editor verwendet vorschlagen könnte meinen Code auszuführen:

https://www.tutorialspoint.com/execute_python_online.php

+0

Mit 'mit öffnen' an einigen Stellen, aber nicht anderen ist ... unheimlich. – tripleee

Antwort

0
infoFromJson = json.load(json_data) 

Hier json.load() erwartet eine gültige JSON-Daten als json_data. Aber die json_data Sie zur Verfügung gestellt sind nicht gültig json, es ist eine einfache Zeichenfolge (Hello World!). Sie erhalten also den Fehler.

ValueError: No JSON object could be decoded

Update:

In Ihrem Code sollten Sie den Fehler:

TypeError: expected a character buffer object

Das ist, weil die Inhalte, die Sie in die Datei schreiben muss Zeichenfolge sein, sondern anstelle dessen, , Sie haben eine Wörterbuchliste.

Zwei Wege, um dies zu lösen. Ersetzen Sie die Zeile:

htmlfile.write(infoFromJson) 

Um dies entweder:

htmlfile.write(str(infoFromJson)) 

Um infoFromJson eine Zeichenfolge zu machen.

Oder nutzen Sie das dump Dienstprogramm von json Modul:

json.dump(infoFromJson, json_data) 
+0

Danke für Ihre Antwort. Ich habe jetzt einen richtigen JSON gegeben - ich habe meinen Post mit gültigem JSON in meiner Nachricht aktualisiert, aber ich bekomme immer noch denselben Fehler. –

+0

Siehe die aktualisierte Antwort. –

0

Wenn Sie Try...except Anweisung löschen, werden Sie Fehler unten:

Traceback (most recent call last): File "/Volumes/Ithink/wechatProjects/django_wx_joyme/app/test.py", line 26, in <module> create(JsonResponse) File "/Volumes/Ithink/wechatProjects/django_wx_joyme/app/test.py", line 22, in create htmlfile.write(infoFromJson) TypeError: expected a string or other character buffer object

Fehler ist aufgetreten, weil htmlfile.write Notwendigkeit string type, aber infoFromJson ist eine Liste.
Also, ändern htmlfile.write(infoFromJson) zu htmlfile.write(str(infoFromJson)) wird Fehler vermeiden!

Verwandte Themen