tags:

views:

71

answers:

4

what does this error mean?

i am getting it on this code:

def write_file(data,filename): #creates file and writes list to it
  with open(filename,'wb') as outfile:
    writer=csv.writer(outfile)
    for row in data:   ##i get the error here
      writer.writerow(row)
+4  A: 

It means "data" is None.

vanza
+2  A: 

You're calling write_file with arguments like this:

write_file(foo, bar)

But you haven't defined 'foo' correctly, or you have a typo in your code so that it's creating a new empty variable and passing it in.

clee
+3  A: 

It means that the data variable is passing None (which is type NoneType), its equivalent for nothing. So it can't be iterable as a list, as you are trying to do.

Rod
+3  A: 

Code: for row in data:
Error message: TypeError: 'NoneType' object is not iterable

Which object is it complaining about? Choice of two, row and data. In for row in data, which needs to be iterable? Only data.

What's the problem with data? Its type is NoneType. Only None has type NoneType. So data is None.

You can verify this in an IDE, or by inserting e.g. print "data is", repr(data) before the for statement, and re-running.

Think about what you need to do next: How should "no data" be represented? Do we write an empty file? Do we raise an exception or log a warning or keep silent?

John Machin