代码无法保存文件,但没有错误

2024-09-27 04:24:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试运行一个代码来从雅虎财经获取数据。我没有发现任何错误,但我在我的电脑上找不到这些文件。有人能帮忙吗?在

谢谢, 乔希

这就是我现在用的,我得到了很多“哦不”,我试着用数字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)

修正了,谢谢所有帮忙的人。在


Tags: inimporttimestock数字urllib2splitprint
3条回答

可以使用find命令查找已创建的文件:

sudo find / 'GOOG.txt'  

但是,记住要将绝对路径添加到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)相同的逻辑。在

import urllib.request
import time

stockstoPull = 'CJES','BP','MSFT','TSLA','GOOG'

def pullData(stock):
    fileLine = stock+'.txt'
    urltovisit ='http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=1y/csv'
    with urllib.request.urlopen(urltovisit) as f:
        sourceCode = f.read(100000).decode('utf-8')
    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)

相关问题 更多 >

    热门问题