TypeError: ‘NoneType’ object is not iterable in Python

TypeError: ‘NoneType’ object is not iterable in Python :

SOLUTION 1:

It means the value of data is None.


SOLUTION 2:

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.


SOLUTION 3:

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.


SOLUTION 4:

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?

Leave a Comment