Python 2.7。で記述されたコードに関する問題を理解できません。参照をintに変換していますが、型例外_bad operand type for unary +: 'str'
_を取得し続けます。
_import urllib2
import time
import datetime
stocksToPull = 'EBAY', 'AAPL'
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=3y/csv'
saveFileLine = stock + '.txt'
try:
readExistingData = open(saveFileLine, 'r').read()
splitExisting = readExistingData.split('\n')
mostRecentLine = splitExisting[-2]
lastUnix = mostRecentLine.split(',')[0]
except Exception, e:
print str(e)
time.sleep(1)
lastUnix = 0
saveFile = open(saveFileLine, 'a')
sourceCode = urllib2.urlopen(urlToVisit).read()
splitSource = sourceCode.split('\n')
for eachLine in splitSource:
if 'values' not in eachLine:
splitLine = eachLine.split(',')
if len(splitLine) == 6:
if int(splitLine[0]) > int(lastUnix):
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(120)
except Exception, e:
print 'main loop', str(e)
for eachStock in stocksToPull:
pullData(eachStock)
_
比較されている両方の値がテスト時にintとして出力される場合でも、if int(splitLine[0]) > int(lastUnix):
に達すると、オペランド例外_bad operand type for unary +: 'str'
_がヒットします。どなたかフィードバックをお願いできますか?ありがとうございました!
例外応答は次のとおりです。
_Currently pulling EBAY
2013-12-21 11:32:40
Pulled main loop bad operand type for unary +: 'str'
Currently pulling AAPL
2013-12-21 11:32:41
Pulled main loop bad operand type for unary +: 'str'`
_
if int(splitLine[0]) > int(lastUnix):
が問題を引き起こしていると言いますが、実際にそれを示唆するものは何も表示しません。私はこの行が代わりに問題だと思う:
print 'Pulled', + stock
この行がそのエラーメッセージを引き起こす理由を理解していますか?あなたはどちらかが欲しい
>>> stock = "AAAA"
>>> print 'Pulled', stock
Pulled AAAA
または
>>> print 'Pulled ' + stock
Pulled AAAA
じゃない
>>> print 'Pulled', + stock
PulledTraceback (most recent call last):
File "<ipython-input-5-7c26bb268609>", line 1, in <module>
print 'Pulled', + stock
TypeError: bad operand type for unary +: 'str'
Pythonに+
シンボルを+23
のような文字列に適用するように求めているのは23であり、彼女は反対しています。
コードは私のために機能します。 (欠落しているexcept
句/ import
ステートメントを追加した後)
元のコードに_\
_を入れましたか?
_urlToVisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/' \
+ stock + '/chartdata;type=quote;range=5d/csv'
_
省略すると、例外の原因になる可能性があります。
_>>> stock = 'GOOG'
>>> urlToVisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/'
>>> + stock + '/chartdata;type=quote;range=5d/csv'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: bad operand type for unary +: 'str'
_
ところで、string(e)
はstr(e)
でなければなりません。