主循环“ builtin_function_or_method”对象不可迭代 [英] main loop 'builtin_function_or_method' object is not iterable

查看:1891
本文介绍了主循环“ builtin_function_or_method”对象不可迭代的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我运行以下代码时,我收到此错误主循环'builtin_function_or_method'对象不可迭代:

I get this error "main loop 'builtin_function_or_method' object is not iterable" when I run the code below:

我有搜索stackoverflow,但找不到答案我的问题...

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)


推荐答案

直接回答

在此处的代码中:

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

sourceCode.split 更改为 sourceCode.split()

如果要要了解有关此错误的更多信息,请阅读以下内容:

调试时,最好删除try ... except块,尤其是 expect Exception

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块并再次运行这些代码时,您将得到错误提示。这样的错误信息:

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

错误消息 TypeError:'builtin_function_or_method'对象不可迭代与第25行相关联,这意味着 splitSource builtin_function_or_method 而不是可迭代

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.

什么是 splitSource ?它是 sourceCode.split 。答案来了。您应该使用()调用方法,否则,方法本身将得到。方法 str.split 显然不是 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!

这篇关于主循环“ builtin_function_or_method”对象不可迭代的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆