# -*- coding: utf-8 -*-
"""
Created on Thu Dec 1 16:58:49 2016
@author: duchao
"""
import pandas as pd
import time
import tushare as ts
import datetime
import random
import os
code = input("输入股票代码:")
code = str(code)
code = code.zfill(6)
#股票代码格式化 0开头的 代码,标准代码比如 000001
print("开始更新:%s..."%code)
#判断已经存在的表格的最新数据日期
filename = code+'.csv'
#指定文件存储的地方
if os.path.exists(filename):
chu = pd.read_csv(filename,encoding="gb2312").tail(5)
duan = chu.iloc[3,7]
a = duan
b = datetime.datetime.strptime(a,"%Y-%m-%d").date()
c = b + datetime.timedelta(days=1)
d = datetime.datetime.strftime(c,"%Y-%m-%d")
s1 = d
#如果已经存在表格,就以表中日期最大,第二天作为开始取数日期
else:
s1 = '2014-01-01'
#如果不存在表,就直接 指定开始日期
df = ts.get_hist_data(code,start=s1)
df1 = df.reset_index(drop=False)
df2 = list(df1['date'])
df2.reverse()
wei = df2
#获得开盘日期,剔除 周末和节假日
if len(wei) ==0:
print ("已经最新")
#最后更新,因为 当天的数据,会被重复追加 tushare bug
s2 = datetime.datetime.strptime(s1, "%Y-%m-%d").date()
s4 = wei[0]
s5 = datetime.datetime.strptime(s4,"%Y-%m-%d").date()
if s2 > s5:
wei = []
#如果 开始日期大于,开盘最大日期,那么就把 日期列表清空
for d in wei:
#在 正确的 时间周期内,获取 分笔数据,分次写入到 csv中
fenbi = ts.get_tick_data(code,date=d)
if len(fenbi) < 10:
continue
fenbi['day'] = d
fenbi['code'] = code
if os.path.exists(filename):
fenbi.to_csv(filename, mode='a', header=None)
else:
fenbi.to_csv(filename)
print(code,d)
time.sleep(random.randint(0,2))
print("更新成功:%s"%code)
#循环更新股票代码
print("全部HS300更新成功!")
time.sleep(10)
sqlserver 更新 datetime 数据_获取股票分笔数据存储本地
最新推荐文章于 2022-07-28 13:40:49 发布