2-12 【实战】:创建你的股票数据库课后作业
来源:2-12 【实战】:创建你的股票数据库

慕粉17780521093
2021-07-04
说明:code2name.csv记录了股票代码和股票名称的对应关系
# 设置全局变量
data_root = "/Users/zhongbo/PycharmProjects/pythonProject1/DelatTrader/Data/"
def get_name(code):
"""
通过股票代码获取股票名称
:param code:股票代码
:return:df.loc[code,'display_name']
"""
df = pd.read_csv('路径/code2name.csv')
df.index = df['code']
return df.loc[code, 'display_name']
def creat_filename_from_code(code):
"""
通过股票代码,生成文件名称,格式为:"股票代码-股票名称)
:param code: 要生成文件名称的股票代码
:return:
"""
name = get_name(code)
return code + '-' + name
def save_data(data, filename, types):
"""
存储股票数据,当股票数据记录文件存在时,更新最新数据;当数据文件不存在时,新建数据记录文件
:param types: 股票数据类型,可以是price,finance等
:param data: 要写入CSV文件的内容
:param filename: CSV文件的名称,建议使用creat_filename_from_code()函数,从code自动生成,格式为'股票代码-股票名称'
:return:
"""
file_root = data_root + types + "/" + filename + '.csv'
# 判断文件夹中是否有该文件,如果有,则更新数据,如果没有,则新建文件
if os.path.exists(file_root): # 如果该股票有数据文件,则更新数据
# 判断data是否为空(例如当日股票停牌等),若为空则不做处理,若不为空,则进行数据更新或文件新建
if data.empty:
print(filename, '当日无价格数据')
return None
else:
last_day_in_data = datetime.strftime(data.index[len(data.index) - 1], '%Y-%m-%d') # 获取data中最后一行的index(日期)
file_data = pd.read_csv(file_root)
last_day_in_file = file_data['date'][len(file_data) - 1] # 获取file中最后一行的data值(日期)
if last_day_in_file != last_day_in_data: # 判断最新获取的数据,是否已经在file中存在,若已存在,则不做操作,若不存在,则更新数据
data.to_csv(file_root, mode='a', header=False)
print('已成功更新', file_root)
else:
print(filename, '当日数据在file中已存在')
else: # 如果该股票没有数据文件,则新建文件
data.to_csv(file_root)
print('已成功存储到', file_root)
trade_day = st.get_trade_days(end_date=datetime.datetime.today(), count=1) # 获取最近一个交易日期 # 如果今天是交易日,则更新价格,否则提示今天不是交易日 if trade_day[0] != datetime.date.today(): # 最近一个交易日不是今天,意味着今天不是交易日 print('今天不是交易日') else: # 今天是交易日,执行更新数据代码 stocks = st.get_all_securities('stock') # 获取股票列表 for code in stocks.index: # 获取每只股票当天价格数据,并更新价格记录文件 data = st.get_single_price(code=code, start_date=datetime.datetime.today(), end_date=datetime.datetime.today(), frequency='daily') st.save_data(data=data, filename=st.creat_filename_from_code(code), types='price')
1回答
-
DeltaF
2021-07-07
棒棒哒,祝学习愉快!
00
相似问题