主循环“ builtin_function_or_method”对象不可迭代

发布于 2021-01-29 14:57:10

运行以下代码时,出现此错误“主循环’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)
关注者
0
被浏览
120
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    直接回答

    在这里的代码中:

    saveFile = open(saveFileLine,'a')
    sourceCode = urllib2.urlopen(urlToVisit).read()
    splitSource = sourceCode.split
    

    更改sourceCode.splitsourceCode.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

    什么splitSource
    是的sourceCode.split。答案来了。您应该使用来调用方法(),否则,您将获得方法本身。该方法str.split显然不是iterable



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看