2016-06-27 2 views
0
if productid==row[0]: #This means it runs every row in the reader file which is the csv file in this case 
    price = row[2] 
    stocklevel = row[3] 
    reorderlevel = row[4] 
    targetlevel = row[5] 
    total = float(amount)*float(price) 
    totalprice = float(totalprice)+float(total) 
    stocklevel = float(stocklevel)-float(amount) 
    newstock = (stocklevel) 
    b = open('products.csv', 'w') 
    a = csv.writer(b) 
    data = [['row[3]', 'row[4]', 'row[5]'], 
      ['293', '219'], 
      ['54', '13']] 
    a.writerows(data) 
    b.close() 

Grundsätzlich halte ich immer diese Fehlermeldung Dateii halten Indexerror bekommen: außerhalb des zulässigen Bereichs auf Python Indexliste

"E:\Python Programme\pythonv5.py", line 71, in productlist() File "E:\Python Programme\pythonv5.py", line 9, in productlist print(row[0]+" "+row[1]+" "+row[2]) IndexError: list index out of range

+0

Können Sie die Datenstruktur Ihrer CSV-Datei und deren Inhalt anzeigen? Weil ein Indexfehler ziemlich offensichtlich ist. In diesem Fall existiert die Zeile [0] (oder 1 oder 2) nicht. –

+2

Der Fehler bezieht sich auf eine Zeile mit einer print-Anweisung, der Code enthält jedoch keine print-Anweisung. Indexliste außerhalb des Bereichs bedeutet, dass Sie versuchen, auf das dritte Objekt in einer Liste mit nur zwei Objekten zuzugreifen. Oder deine Liste könnte leer sein und dann würde es das jederzeit sagen. Versuchen Sie, 'print (row [0] ...' in 'print (len (row).)' Zu ändern, um zu sehen, wie viele Objekte in Ihrer Liste sind. –

Antwort

0

Versuchen:

if len(row) > 0 and productid==row[0]: 
    #rest of the code here ... 

Sie müssen sicherstellen, dass Zeile Liste machen eine hat Länge, die indiziert werden soll.

+0

Die Art, wie die Antwort jetzt formuliert wird, ist kaum als eine Antwort und Es ist eher ein Kommentar. Ich denke, es gibt eine Erklärung, warum dies das Problem löst. –

+0

Dies stellt keine Antwort auf die Frage dar. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. [Aus Bewertung] (/ review/low-quality-posts/18975308) –