2017-05-16 1 views
0

weiter zu meiner früheren Frage, wie man eine csv-Datei in Python öffnet, bin ich immer noch nicht erfolgreich dabei und gehe von Fehler zu Fehler.Öffnen von CSV-Datei in Python: Builtins. AttributeError AttributeError: '_io.BytesIO' Objekt hat kein Attribut 'Datei'

Mein Python-Code ist wie folgt:

@app.route("/admin", methods=["GET", "POST"]) 
@login_required 
def admin(): 
"""Configure Admin Screen""" 
# if user reached route via POST (as by submitting a form via POST) 
if request.method == "POST": 

    # load csv file with portfolio data 
    csvfile = TextIOWrapper(request.files['portfolios'].file, encoding=request.encoding) 
    portfolios = csv.DictReader(csvfile) 

    # load csv file in dictionary 
    for row in portfolios: 
     print(row['first_name'], row['last_name']) 
else: 
    return render_template("admin.html") 

Mein Kolben/HTML-Code ist wie folgt:

{% extends "layout.html" %} 

`{% block title %} 
    Admin 
{% endblock %} 

{% block main %} 
<h2>Admin Console</h2> 
<h3> Upload Portfolio Data</h2> 
<form action="{{ url_for('admin') }}" method="post" enctype=multipart/form- 
data> 
<fieldset> 
    <label class="control-label">Select Portfolio Upload File</label> 
    <input id="input-1" type="file" class="file" name="portfolios"> 
    <h3>Upload Security Lists</h2> 
    <label class="control-label">Select Security Upload File</label> 
    <input id="input-1" type="file" class="file" name="securities"> 
    <div class="form-group"> 
     <button class="btn btn-default" type="submit" value = "upload">Upload</button> 
    </div> 
</fieldset> 
</form> 
{% endblock %} 

Zunächst folgte ich buchstäblich das Beispiel aus der Python-Dokumentation: import csv mit open ('names.csv') als csvfile: reader = csv.DictReader (csvfile) für Zeile im Leser: print (row ['first_name'], row ['last_nam e '])

dies funktioniert nicht, da es eine Art Fehler gab (see my earlier post)

ich dann entfernt, wie vorgeschlagen, die ‚offen‘, die in einem anderen Fehler geführt. Ich entfernte dann das Ganze mit Block, was wiederum zu einem Fehler führte. Nun ist der obige Code, was ich jetzt bin, und seine Erzeugung der folgenden Fehler:

builtins.AttributeError Attribute: ‚_io.BytesIO‘ Objekt hat kein Attribut ‚Datei‘

Wer meine csv helfen kann Import Alptraum bis zum Ende ?? Txs !!

+0

haben Sie versucht, nur 'csvfile = TextIOWrapper (request.files [ 'Portfolios'], encoding = request.encoding)' –

Antwort

0

io.TextIOWrapper dauert ein io.BytesIO Objekt in Ordnung.

Sie (fast) vorbei es, mit der Ausnahme, dass Sie hinzufügen eine .file (warum ??), die kein Feld der io.BytesIO Klasse (request.files['portfolios'] ist ein io.BytesIO Objekt bereits)

Just do :

csvfile = TextIOWrapper(request.files['portfolios'], encoding=request.encoding) 
+0

Hmmmmm, wenn ich das tue, erhalte ich ein Attribut: 'Request' Objekt kein Attribut 'encoding' .... :( –

+0

es bedeutet, dass Sie dieses Problem bereits hatten. Ich habe das nicht geändert Die Art der Anfrage. Versuchen Sie, den Parameter "Encoding" wegzulassen. –

+0

Ja! Es scheint jetzt zu funktionieren; txs viel! –

Verwandte Themen