-1返回python list

时间:2015-07-08 22:29:00

标签: python python-3.x numpy urllib

我正在使用Python 3.4编写一个脚本,通过使用urllib来提取数据并将其存储在文本文件中并从numpy中解压缩来从Yahoo Finance's ChartAPI page提取数据。但是,当我尝试使用[-1]访问列表中的最后一个元素时,我最终会使用倒数第二个元素而不是最后一个元素。

以下是我的相关代码:

import urllib.request
import numpy as np

def n_year_data(symbol):
    tempFile = 'temp.txt'
    open(tempFile,'w+') # to clear any previous content

    yahooChartApi = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+symbol+'/chartdata;type=quote;range=1y/csv'
    with urllib.request.urlopen(yahooChartApi) as f:
        sourceCode = f.read().decode('utf-8')
    splitSource = sourceCode.split('\n')

    for eachLine in splitSource:
        splitLine = eachLine.split(',') 
        if len(splitLine) == 6: 
            if 'values' not in eachLine:
                saveFile = open(tempFile,'a')
                linetoWrite = eachLine+'\n'
                saveFile.write(linetoWrite)

    date, close, high, low, openPrice, volume = np.loadtxt(tempFile, delimiter=',', unpack=True)

    print(date[-1])

n_year_data("GOOG")

上面的代码应该返回最后一个日期20150707.但是它返回20150706最后一个日期之前的日期。此外,当我查看我的文本文件时,所有日期都在那里,因为它们应该是。在此先感谢您的帮助或建议。

1 个答案:

答案 0 :(得分:2)

由于您在写完后没有正确关闭文件,因此可能会遇到此问题或其他潜在问题。

请勿在循环中打开并附加到该文件。

考虑使用它,而不是:

with open('temp.txt', 'w') as f:
   for item in iterable:
       f.write('hello')

with open('temp.txt', 'r') as f:
   for line in f:
       print(line)