2017-11-24 1 views
0

Ich erhalte den folgenden Fehler beim Lesen einer CSV-Datei in meinem Django-Projekt.Fehler beim Lesen von CSV: Coercing zu Unicode: brauche Zeichenfolge oder Puffer

coercing to Unicode: need string or buffer, file found 

Ich habe das Forum bereits gesucht, konnte aber keine Lösung für mein Problem finden. Ich habe auch keine Ahnung, wie ich das lösen soll. Wenn ich diesen Code lokal ausführe, habe ich das Problem nicht. Sobald ich das Skript aus meinen Django-Ansichten ausgeführt habe, erhalte ich den Fehler von oben.

in Unicode Nötigung: need String oder Puffer, Datei gefunden

import os 
from django.conf import settings 

path = os.path.join(settings.BASE_DIR, 'technicalAnalalysis/EUR_USD') 

def index(request): 

    return render(request, 'technicalAnalysis/home.html') 



class carouselData(APIView): 

    authentication_classes = [] 
    permission_classes = [] 

    def get(self, request, format=None): 

     import csv 

     EUR_USD_closeBid = [] 

     with open(path) as csvfile: 

      readCSV = csv.reader(open(csvfile), delimiter=str(',').encode('utf-8'),) 

      for row in readCSV: 

       closeBid = row[0] 

       BOP = row[12] 

       EUR_USD_closeBid.append(closeBid) 

     data = { 
      "EUR_USD_closeBid":EUR_USD_closeBid, 

      } 

     return Response(data)    

dies ist, wie die csv erstellt wurde

master.to_csv(eachCurrency, encoding='utf-8', index=False) 

und dies, wie die CSV-Daten sieht aus wie

1.4551,2016-08-25T21:00:00.000000Z,1.46613370302,1.4588,1.45146629698,19.2623252118,16.0468541889,18.0294990319,52.3305843166,-0.000955558790503,0.00497888833433,0.00402332954383,-0.228110599078 
1.45557,2016-08-28T21:00:00.000000Z,1.46022799941,1.45683,1.45343200059,18.3020335848,15.2573095743,17.1424034245,52.7163692506,-0.00105527020367,0.00471507078342,0.00365980057975,0.655172413793 
1.45919,2016-08-29T21:00:00.000000Z,1.459965965,1.456766,1.453566035,17.7461955078,14.6233407849,18.0619294336,55.6907414516,-0.000874414835166,0.00449646707462,0.00362205223946,0.82183908046 

Vielen Dank im Voraus und freundliche Grüße

Antwort

1

Sie öffnen die CSV-Datei zweimal. Entfernen Sie die open() aus dieser Zeile:

readCSV = csv.reader(open(csvfile), delimiter=str(',').encode('utf-8'),) 

zu

readCSV = csv.reader(csvfile, delimiter=str(',').encode('utf-8')) 
+0

funktioniert perfekt, vielen Dank – Marcel

1

Sie haben bereits die Datei geöffnet. Sie sollten die Datei in den Speicher lesen und dann mit der csv-Bibliothek analysieren.

Andernfalls können Sie stattdessen csv.reader verwenden, so dass Sie das Öffnen der Datei überspringen und die Bibliothek für Sie behandeln lassen können.

1

Vielleicht könnte auch csv.DictReader hier hilfreich sein. Also zum Beispiel:

with open(path) as f: 
    data = list(csv.DictReader(f)) 
Verwandte Themen