使用python制作/下载csv文件

时间:2014-09-13 21:47:57

标签: python python-2.7 url csv urllib2

我希望使用封闭的股票价值制作CSV,在Windows上使用python 2.7从Yahoo Finance下载。该文件是电话"历史价格"。我有一个列表中的代码,我想知道我是否可以创建一个连续的闭合值的csv文件。例如:

AAPL,109,87,110.06,
GOOG,2123.546,213,56,

(依此类推)

到目前为止,我的脚本是这样的:

import urllib2
import csv

nasdaqlisted = urllib2.urlopen("ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt")
raw = nasdaqlisted.read().split("\r\n")
del raw[0]
del raw[-1]

tickerslist = []
for l in raw:
    linea = l.split("|")
    tickerslist.append(linea[0])
del tickerslist[-1]

def closed(tickerslist):
    url = urllib2.urlopen("http://real-chart.finance.yahoo.com/table.csv?s=" +tickerslist+ "&d=8&e=13&f=2014&g=d&a=11&b=12&c=1980&ignore=.csv")
    raw = url.read().split("\r\n")
    del raw[0]
    del raw[-1]

closed_us = open("closed-us.csv","w")

for i in tickerslist:
    cierres.write(closed(i))
closed_us.close()

非常感谢!

P.D。:我发现了这个问题。它可以帮助你Download a .csv file with Python,但我没有说这是因为"请求"不能导入(我猜是因为我使用的是python 2.7而不是3.3)

1 个答案:

答案 0 :(得分:0)

你拥有的一切看起来都很好。 对于CSV文件,一般来说,只需编写一个普通的文本文件就可以在需要的地方添加逗号 - 不需要任何粉丝。在您的示例中:

def closed(tickerslist):
    returnLine = tickerslist
    url = urllib2.urlopen("http://real-chart.finance.yahoo.com/table.csv?s=" +tickerslist+ "&d=8&e=13&f=2014&g=d&a=11&b=12&c=1980&ignore=.csv")
    raw = url.read().split("\r\n")[1:-1]
    # if you wanted to grab the last number on each line...
    for line in raw:
        returnLine += ','+line[line.rfind(',')+1:])
    return returnLine+'\n'

如果您只对文件的一小部分感兴趣,那么'read'方法有一个可选参数,用于读取字节。因此,您无需下载整个文件即可在开头查找内容。如果您想在单独的线程中下载更大的文件并更新有关进度的主线程(通常是gui),则此参数也很有用。

希望这有帮助。