2016-04-28 9 views
0

Ich versuche, eine CSV-Datei von einer Webseite mit Kolben zu importieren. Ich kann die Daten aus der CSV-Datei importieren und die Daten als JSON zurückgeben. Allerdings möchte ich nur die erste Probe aus den Daten drucken. Ich habe meinen Code und den Flaschenfehler unten angehängt. Die csv-Datei, die ich verwende, ist csvfile. Die zurück json Daten sehen so etwas wie dieseFlask-Python importieren Daten aus CSV-Datei

{ 
 
    "result": [ 
 
    [ 
 
     "0.011223", 
 
     "0.018274", 
 
     "0.071568", 
 
     "0.3407", 
 
     "0.50367", 
 
     "0.63498", 
 
     "0.45607", 
 
     "0.39945", 
 
     "0.27201", 
 
     "0.23569", 
 
     "0.29102", 
 
     "0.15327", 
 
     "0.095266", 
 
     "0.059091", 
 
     "0.014877", 
 
     "0.00010369", 
 
     "0.049384", 
 
     "0.12681", 
 
     "0.24325", 
 
     "0.30725", 
 
     "0.4259", 
 
     "0.56476", 
 
     "0.606", 
 
     "0.1001", 
 
     "0.5427", 
 
     "0.63342", 
 
     "0.62526", 
 
     "0.59211", 
 
     "0.59013", 
 
     "0.50669", 
 
     "0.42666", 
 
     "0.29487", 
 
     "0.20149",

Bitte Rat, was mit dem Skript nicht stimmt.

`from flask import Flask, request, jsonify, render_template 
from flask.ext import excel 
import json, csv 

app=Flask(__name__) 
app.debug = True 

@app.route("/upload", methods=['GET', 'POST']) 
def upload_file(): 
    if request.method == 'POST': 
     a= jsonify({"result": request.get_array(field_name='file')}) 
     entries = json.loads(a) 
     entry=entries['result'][0] 
     return "<h2>'entry=%f'</h2>"%entry 
    return ''' 
    <!doctype html> 
    <title>Upload an excel file</title> 
    <h1>Excel file upload (csv, tsv, csvz, tsvz only)</h1> 
    <form action="" method=post enctype=multipart/form-data><p> 
    <input type=file name=file><input type=submit value=Upload> 
    </form> 
     ''' 


    if __name__ == "__main__": 
    app.run()` 

TypeError 
 
TypeError: expected string or buffer 
 

 
Traceback (most recent call last) 
 
File "C:\Users\Vikrant\Desktop\Flask1\chap1\lib\site-packages\flask\app.py", line 1836, in __call__ 
 
return self.wsgi_app(environ, start_response) 
 
File "C:\Users\Vikrant\Desktop\Flask1\chap1\lib\site-packages\flask\app.py", line 1820, in wsgi_app 
 
response = self.make_response(self.handle_exception(e)) 
 
File "C:\Users\Vikrant\Desktop\Flask1\chap1\lib\site-packages\flask\app.py", line 1403, in handle_exception 
 
reraise(exc_type, exc_value, tb) 
 
File "C:\Users\Vikrant\Desktop\Flask1\chap1\lib\site-packages\flask\app.py", line 1817, in wsgi_app 
 
response = self.full_dispatch_request() 
 
File "C:\Users\Vikrant\Desktop\Flask1\chap1\lib\site-packages\flask\app.py", line 1477, in full_dispatch_request 
 
rv = self.handle_user_exception(e) 
 
File "C:\Users\Vikrant\Desktop\Flask1\chap1\lib\site-packages\flask\app.py", line 1381, in handle_user_exception 
 
reraise(exc_type, exc_value, tb) 
 
File "C:\Users\Vikrant\Desktop\Flask1\chap1\lib\site-packages\flask\app.py", line 1475, in full_dispatch_request 
 
rv = self.dispatch_request() 
 
File "C:\Users\Vikrant\Desktop\Flask1\chap1\lib\site-packages\flask\app.py", line 1461, in dispatch_request 
 
return self.view_functions[rule.endpoint](**req.view_args) 
 
File "C:\Users\Vikrant\Desktop\Flask1\Flaskr\flaskr_t2.py", line 12, in upload_file 
 
entries = json.loads(a) 
 
File "c:\python27\Lib\json\__init__.py", line 339, in loads 
 
return _default_decoder.decode(s) 
 
File "c:\python27\Lib\json\decoder.py", line 364, in decode 
 
obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
 
TypeError: expected string or buffer 
 
The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error. 
 
To switch between the interactive traceback and the plaintext one, you can click on the "Traceback" headline. From the text traceback you can also create a paste of it. For code execution mouse-over the frame you want to debug and click on the console icon on the right side. 
 

 
You can execute arbitrary Python code in the stack frames and there are some extra helpers available for introspection: 
 

 
dump() shows all variables in the frame 
 
dump(obj) dumps all that's known about the object 
 
Brought to you by DON'T PANIC, your friendly Werkzeug powered traceback interpreter.

Antwort

0

Ich denke, das Problem hier mit jsonify ist.

Nach the docs:

flask.json.jsonify (args *, ** kwargs)

Erstellt eine Antwort mit der JSON Darstellung der gegebenen Argumente mit einer Anwendung/json MIME-Typ.

(Siehe auch this answer.)

Sie würden es in der Regel verwenden, um eine json zu einem Client (wie in einer API, zum Beispiel) zu senden und lassen Sie es die Protokoll Sachen behandeln.

Wenn dieses Schreiben: nur die JSON-Daten zurück, keine vollständige Antwort

a= jsonify({"result": request.get_array(field_name='file')}) 
    entries = json.loads(a) 

es sieht aus wie Sie es erwarten.

Haben Sie versucht, a zu drucken und zu sehen, was dort drin ist? Sie können auch request.get_array(field_name='file') drucken, da es so aussieht, als würden Sie die Daten serialisieren und deserialisieren.

Verwandte Themen