如何通过 python 和 pandas 更新而不是重写 csv 来获取股票数据?

How to update instead of rewriting csv by python with pandas to fetch stock data?

我在编程方面绝对是菜鸟。
我想从yahoo上抓取一个股票列表的历史数据做数据分析
我修改了我找到的脚本并得到了这个。

#settings for importing built-in datetime and date libraries
#and external pandas_datareader libraries

import pandas_datareader.data as web
import datetime
from datetime import timedelta


#read ticker symbols from a file to python symbol list
symbol = []
with open('E:\Google drive\Investment\Python Stock pick\Stocklist1.txt') as f:  
    for line in f:
        symbol.append(line.strip())
f.close

end = datetime.datetime.today()

start = end - timedelta(days=400)

#set path for csv file
path_out = 'E:/Google drive/Investment/Python Stock pick/CSV/'


i=0
while i<len(symbol):
    try:
        df = web.DataReader(symbol[i], 'yahoo', start, end)
        df.insert(0,'Symbol',symbol[i])
        df = df.drop(['Adj Close'], axis=1)
        if i == 0:
            df.to_csv(path_out+symbol[i]+'.csv')
            print (i, symbol[i],'has data stored to csv file')
        else:
            df.to_csv(path_out+symbol[i]+'.csv',header=True)
            print (i, symbol[i],'has data stored to csv file')
    except:
        print("No information for ticker # and symbol:")
        print (i,symbol[i])
        i=i+1
        continue
    i=i+1

我 运行 脚本每天都会获取过去的股票数据。
它将替换整个 csv 文件,并始终用新数据替换旧数据。

脚本是否只是将新数据添加到 csv 文件中?

非常感谢。我是编程界的新手,不知道该怎么做。

您必须添加参数 'a':

with open('E:\Google drive\Investment\PythonStockpic\Stocklist1.txt','a') as f:
    f.write(line.strip())

参见:append new row to old csv file python

我认为您需要添加 'a+'。否则文件将继续循环播放。这就是发生在我身上的事情。