[英]main loop 'builtin_function_or_method' object is not iterable
I get this error "main loop 'builtin_function_or_method' object is not iterable" when I run the code below: 运行以下代码时,出现此错误“主循环'builtin_function_or_method'对象不可迭代”:
I have search stackoverflow, but cant find a answer to my question... 我有搜索stackoverflow,但找不到我的问题的答案...
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)
Direct Answer 直接回答
In the code here: 在这里的代码中:
saveFile = open(saveFileLine,'a')
sourceCode = urllib2.urlopen(urlToVisit).read()
splitSource = sourceCode.split
change sourceCode.split
to sourceCode.split()
. 将sourceCode.split
更改为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. 调试时,最好删除try ... except块,尤其是“ expect Exception”块,该块是如此通用,以至于您会迷失方向。
When removed the try...except block and run these code again, you will get error info like this: 当删除try ... except块并再次运行这些代码时,您将获得如下错误信息:
---------------------------------------------------------------------------
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
. 该错误消息TypeError: 'builtin_function_or_method' object is not iterable
与线25,这意味着相关联splitSource
是builtin_function_or_method
并且不是iterable
。
What is splitSource
? 什么是splitSource
? It is sourceCode.split
. 它是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
! 方法str.split
显然不是iterable
!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.