如何通过 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+'。否则文件将继续循环播放。这就是发生在我身上的事情。
我在编程方面绝对是菜鸟。
我想从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+'。否则文件将继续循环播放。这就是发生在我身上的事情。