main loop 'builtin_function_or_method' object is not iterable
Direct Answer
In the code here:
saveFile = open(saveFileLine,'a')
sourceCode = urllib2.urlopen(urlToVisit).read()
splitSource = sourceCode.split
change sourceCode.split
to sourceCode.split()
.
If you want to know more about this error, read below:
When debugging, you'd better remove the try...except block, especially an "expect Exception" block, which is so generic that you will get lost about what is going wrong.
When removed the try...except block and run these code again, you will get error info like this:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-c4fe20f718cd> in <module>()
43
44 for eachStock in stocksToPull:
---> 45 pullData(eachStock)
<ipython-input-5-c4fe20f718cd> in pullData(stock)
23 splitSource = sourceCode.split
24
---> 25 for eachLine in splitSource:
26 splitLine = eachLine.split(',')
27 if len(splitLine) ==6:
TypeError: 'builtin_function_or_method' object is not iterable
The error message TypeError: 'builtin_function_or_method' object is not iterable
is associated with line 25, which means splitSource
is a builtin_function_or_method
and is not iterable
.
What is splitSource
? It is sourceCode.split
. Here comes the answer. You should call a method by using ()
, without which you will get the method itself. The method str.split
is obviously not iterable
!
![Isak La Fleur](https://i.stack.imgur.com/MpZWk.jpg?s=256&g=1)
Isak La Fleur
Updated on July 09, 2022Comments
-
Isak La Fleur almost 2 years
I get this error "main loop 'builtin_function_or_method' object is not iterable" when I run the code below:
I have search stackoverflow, but cant find a answer to my question...
I have checked for typos, but cant find any error. Please help me!
import urllib2 import time import datetime stocksToPull = 'AAPL','GOOG','MSFT','CMG','AMZN','EBAY','TSLA' def pullData(stock): try: print 'Currently pulling',stock print str(datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')) urlToVisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=5d/csv' saveFileLine = stock+'.txt' try: readExistingData = open(saveFileLine,'r').read() splitExisting = readExistingData.split('\n') mostRecentLine = splitExisting[-2] lastUnix = mostRecentLine.split(',')[0] except: lastUnix = 0 saveFile = open(saveFileLine,'a') sourceCode = urllib2.urlopen(urlToVisit).read() splitSource = sourceCode.split for eachLine in splitSource: splitLine = eachLine.split(',') if len(splitLine) ==6: if splitLine[0] > lastUnix: if 'values' not in eachLine: lineToWrite = eachLine+'\n' saveFile.write(lineToWrite) saveFile.close() print 'Pulled',stock print 'sleeping...' print str(datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')) time.sleep(300) except Exception,e: print 'main loop',str(e) for eachStock in stocksToPull: pullData(eachStock)