2
if class_number == ('1') and sort_by == ('a') or ('A'):

    csv_file = open('Class1_Test_Score.csv', 'a')
    csv_file.write('\n')
    csv_file.write(sname + ' ' + fname)
    csv_file.write(',')
    csv_file.write(score)
    csv_file.close()

    sort1 = open('Class1_Test_Score.csv', 'r')
    sorting = csv.reader(sort1, delimiter = ',')
    sort = sorted(sorting,key=operator.itemgetter(1))

    for eachline in sort:
        csv_file.write(eachline)
mechanical_meat
  • 163,903
  • 24
  • 228
  • 223
  • 2
    You're closing your file before trying to write to it. – mechanical_meat Feb 11 '16 at 23:53
  • I've changed the code to as follows: if class_number == ('1') and sort_by == ('a') or ('A'): csv_file = open('Class1_Test_Score.csv', 'a') csv_file.write('\n') csv_file.write(sname + ' ' + fname) csv_file.write(',') csv_file.write(score) sort1 = open('Class1_Test_Score.csv', 'r') sorting = csv.reader(sort1, delimiter = ',') sort = sorted(sorting,key=operator.itemgetter(0)) for eachline in sort: csv_file.write(eachline) csv_file.close() – Ross Martin Feb 12 '16 at 00:05
  • But i still receive this error message: sort = sorted(sorting,key=operator.itemgetter(0)) IndexError: list index out of range – Ross Martin Feb 12 '16 at 00:07

1 Answers1

0

Is every row in your Nested List its own list object with length greater than 0 ?

The majority of your rows are likely list objects with multiple items, giving it a :

    len ( row ) > 1 

But I'm guessing there may be at least one Row in your Nested List that has a length of 0. In other words whereas most of your rows look like this :

    [  'First Item' ,  2  ,  "3rd Item"   ]

There may be one Row that looks like this :

    [   ]

And you cannot sort with operator.itemgetter unless every row in that nested list has an item at index number 0 ( or another column number you choose to input in your itemgetter ).

RasikhJ
  • 601
  • 5
  • 10