2014-12-04 79 views
0

我目前正在研究一個非常基本的程序來獲取股票數據並將其複製到.csv文件中。不確定如果我正確使用for x in list,因爲我只複製一個股票的數據,而不是列表中每個股票的單獨文件。從列表中抓取股票數據

from datetime import date, timedelta 
import urllib 
import os 

enddate = date.today() 
startdate = enddate + timedelta(-30) # last 30 days 
stocks = ["^RUT", "NFLX", "YHOO", "AAPL", "GOOG"] 
for stock in stocks: 
    print stock 

STOCK_URL = 'http://ichart.finance.yahoo.com/table.csv' 
PARAMS = { 
    'a': startdate.month-1, 
    'b': startdate.day, 
    'c': startdate.year, 
    'd': enddate.month-1, 
    'e': enddate.day, 
    'f': enddate.year, 
    'g': 'd', 
    'ignore': '.csv' 
} 

def pulldata(stock, filename): 
    print "Retrieving latest data..." 
    params = PARAMS.copy() 
    params['s'] = stock 
    url = "%s?%s" % (STOCK_URL, urllib.urlencode(params)) 
    return urllib.urlretrieve(url, filename) 
try: 
    folder = os.stat("My Stock Data/") 
except: 
    folder = os.mkdir("My Stock Data/") 
filename, headers = pulldata(stock, "My Stock Data/" + stock + "-data.csv") 
print "Done" 

回答

1

這正是您的代碼的樣子嗎?

如果是這樣,我希望看到打印出的股票名稱,然後是GOOG的數據,然後是「完成」。

嘗試抓住for循環,將其移動到該呼叫前才pulldata,並縮進該行因此它看起來像

try: 
    folder = os.stat("My Stock Data/") 
except: 
    folder = os.mkdir("My Stock Data/") 

for stock in stocks: 
    print(stock) 
    filename, headers = pulldata(stock, "My Stock Data/" + stock + "-data.csv") 

print("Done")