2017-09-11 2 views
-1

Ich habe ein Python-Skript, das Daten aus einer .csv-Datei einliest und es verwendet, um mathematische Berechnungen an den Daten vorzunehmen. Wenn ich es laufen, ich diesen Fehler:TypeError: Coercing nach Unicode: brauche String oder Puffer, Typ gefunden beim Ausführen von Python-Datei

Traceback (most recent call last): 
    File "HW1_PythonTemplate.py", line 120, in <module> 
    print ','.join(map(str,calculate(args.data, args.i))) 
    File "HW1_PythonTemplate.py", line 56, in calculate 
    with open(file, 'r') as csvfile: 
TypeError: coercing to Unicode: need string or buffer, type found 

Mein Code sieht so aus:

import argparse 
import csv 
import sys 

def calculate(dataFile, ithAttr): 


    numObj, minValue, maxValue, mean, stdev, Q1, median, Q3, IQR = [0,"inf","-inf",0,0,0,0,0,0] 

    rows = [] 
    with open(file, 'r') as csvfile: 
     csvreader = csv.reader(csvfile) 
     for row in csvreader: 
      rows.append(row) 

    columniStr = [row[ithAttr-1] for row in rows] 
    columniFloat = [] 
    for value in columniStr: 
     try: 
      columniFloat.append(float(value)) 
     except ValueError: 
      pass 

In der calculate Funktion, alles Vergangenheit das ist nur willkürlich math.

Mein Haupt sieht aus wie:

if __name__ == "__main__": 
    parser = argparse.ArgumentParser(description='calc') 
    parser.add_argument('--i', type=int, 
          help="ith attribute of the dataset (2 <= i <= 29)", 
          default=5, 
          choices=range(2,30), 
          required=True) 
    parser.add_argument("--data", type=str, 
          help="Location of the dataset file", 
          default="energydata_complete.csv", 
          required=True) 
    args = parser.parse_args() 

    print ','.join(map(str,calculate(args.data, args.i))) 

Antwort

2
with open(file 

Sie dataFile falsch geschrieben.

file ist der integrierte Python-Datentyp für Dateiobjekte, sodass Sie versehentlich versuchen, einen Typ zu öffnen.

+0

Das ist richtig, danke! Ich war so verwirrt, aber es funktioniert jetzt perfekt –

Verwandte Themen