【问题标题】:main loop 'builtin_function_or_method' object is not iterable主循环“builtin_function_or_method”对象不可迭代
【发布时间】:2015-07-20 16:10:30
【问题描述】:

当我运行下面的代码时,我得到这个错误“主循环'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)

【问题讨论】:

  • 您可能需要添加一个语言标签,以便它显示在适当的社区中 - 这样您会得到更多关注。

标签: python built-in iterable


【解决方案1】:

直接回答

在此处的代码中:

saveFile = open(saveFileLine,'a')
sourceCode = urllib2.urlopen(urlToVisit).read()
splitSource = 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 行相关联,这意味着splitSourcebuiltin_function_or_method 而不是iterable

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

【讨论】:

  • 谢谢!这使它起作用: splitSource = sourceCode.split('\n')
  • 酷。如果您认为有帮助,请将此回复标记为Answer
猜你喜欢
  • 2019-01-12
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多