运行以下代码时,出现此错误“主循环’builtin_function_or_method’对象不可迭代”:
我有搜索stackoverflow,但是找不到我的问题的答案…
我检查了错别字,但找不到任何错误。请帮我!
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)
直接回答
在这里的代码中:
saveFile = open(saveFileLine,'a') sourceCode = urllib2.urlopen(urlToVisit).read() splitSource = sourceCode.split
更改sourceCode.split为sourceCode.split()。
sourceCode.split
sourceCode.split()
如果您想进一步了解此错误,请阅读以下内容:
调试时,最好删除try … except块,尤其是“ expect Exception”块,该块是如此通用,以至于您会误解出问题所在。
当删除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
错误消息TypeError: 'builtin_function_or_method' object is not iterable与第25行相关联,这意味着splitSourceabuiltin_function_or_method和not iterable。
TypeError: 'builtin_function_or_method' object is not iterable
splitSource
builtin_function_or_method
iterable
什么splitSource啊 是的sourceCode.split。答案来了。您应该使用来调用方法(),否则,您将获得方法本身。该方法str.split显然不是iterable!
()
str.split