我正在尝试运行一个代码来从雅虎财经获取数据。我没有发现任何错误,但我在我的电脑上找不到这些文件。有人能帮忙吗?在
谢谢, 乔希
这就是我现在用的,我得到了很多“哦不”,我试着用数字5和数字6。还是什么都没有:
import urllib2
import time
stockstoPull = 'CJES','BP','MSFT','TSLA','GOOG'
def pullData(stock):
fileLine = '/Users/Josh/Documents/Python'+stock+'.txt'
urltovisit ='http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=1y/csv'
sourceCode = urllib2.urlopen(urltovisit).read()
splitSource = sourceCode.split('\n')
for eachLine in splitSource:
splitLine = eachLine.split(',')
if len(splitLine) == 5:
if 'values' not in eachLine:
saveFile = open(fileLine,'a')
linetoWrite = eachLine+'\n'
saveFile.write(linetoWrite)
else:
print('oh no')
print('Pulled', stock)
print('...')
time.sleep(.5)
for eachStock in stockstoPull:
pullData(eachStock)
修正了,谢谢所有帮忙的人。在
可以使用find命令查找已创建的文件:
但是,记住要将绝对路径添加到python文件路径中。 在这种情况下:
^{pr2}$(注意,如果您使用的是像eclipse这样的IDE,您可能会在项目文件夹中找到这些文件)
我猜您已经确保了
stock
是一个字符串。如果程序按预期运行,则文件应与程序保存在同一目录下。在如果它没有按预期运行,您可以首先注意到您是在一个
try:
,然后是一个for
,然后是两个if
创建文件。如果这些行中的任何一行没有按预期工作(例如sourceCode
没有按计划拆分,或者if
条件不满足),则不会创建该文件,因此找它没有任何用处。首先测试这些线路是否按您的要求工作。在另外,看起来您错过了
if len(splitLine) == 6:
后面的缩进?在我在你的代码中发现了一个错误。我相信}
if len(splitLine) == 6:
应该是{例如,如果您转到: http://chartapi.finance.yahoo.com/instrument/1.0/CJES/chartdata;type=quote;range=1y/csv
然后读一读你试图分开的第一行: 20120904,19.2400,20.3900,19.1200,20.1500901600
它实际上使用分隔符“.”拆分为5个元素的列表。 20120904年19日 2400,20个 3900,19个 1200,20个 1500901600个
我修改了您的代码,使其在Python3.3.2中运行,这对我很有效,并成功地提取了所有股票数据。在我对
if len(splitLine) == 5:
进行更改之前,您的代码没有进入第一个if
语句,因为len(splitLine)
从来不是6。在这是对我有用的代码。请注意,这是python3.3,因此我必须更改一些内容才能使其正常工作,但是应该使用与更改
len(splitLine)
相同的逻辑。在相关问题 更多 >
编程相关推荐