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?