boucle principale 'builtin_function_or_method' objet n'est pas itérable
J'ai cette erreur "boucle principale 'builtin_function_or_method' objet n'est pas itératif" lorsque j'exécute le code ci-dessous:
J'ai recherche stackoverflow, mais ne peux pas trouver une réponse à ma question...
J'ai vérifié pour les fautes de frappe, mais je ne trouve pas d'erreur. S'il vous plaît aider moi!
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)
- Vous pourriez avoir besoin d'ajouter une balise de langue, de sorte qu'il apparaisse dans la bonne communauté, vous obtiendrez plus d'attention de cette façon.
Vous devez vous connecter pour publier un commentaire.
Réponse Directe
Dans le code ici:
changement
sourceCode.split
àsourceCode.split()
.Si vous voulez en savoir plus sur cette erreur, lire ci-dessous:
Lors du débogage, vous feriez mieux de retirer le bloc try...except, en particulier un "s'attendre à" l'Exception du bloc, qui est tellement générique que vous aurez perdu sur ce qui ne va pas.
Lors de la suppression de l'essayer...à l'exception du bloc et de l'exécution de ces nouveau code, vous obtiendrez une erreur d'infos comme ceci:
Le message d'erreur
TypeError: 'builtin_function_or_method' object is not iterable
est associé à la ligne 25, ce qui signifiesplitSource
est unbuiltin_function_or_method
et n'est pasiterable
.Qu'est-ce que
splitSource
? Il estsourceCode.split
. Voici la réponse. Vous devriez appeler une méthode en utilisant()
, sans laquelle vous obtiendrez la méthode elle-même. La méthodestr.split
est évidemment pasiterable
!