之前做了一个读取TDX数据的代码,如下:
def stock_lc5(self,filepath, name ): file_path=filepath+"\\" + name file_size = os.path.getsize(file_path) pos=0 if(file_size>16000): pos=file_size-16000 with open(file_path, 'rb') as f: f.seek(pos, os.SEEK_SET) loc=0 while True: # print ("loc",loc) li2 = f.read(32) # 读取一个5分钟数据 if not li2: # 如果没有数据了,就退出 break data2 = struct.unpack('HHffffllf', li2) # 解析数据 date_str = self.get_date_str(data2[0], data2[1]) # 解析日期和分时 data2_list = list(data2) # 将数据转成list data2_list[1] = date_d # 将list二个元素更改为日期 时:分 del (data2_list[0]) # 删除list第一个元素 data2_list.append(date_str) df.loc[loc]=data2_list loc+=1 print(df) df.to_csv(file_path+".csv") print(name," convert is done\n")
我去,那个速度,酸爽,想想还是用结构化的来读比较快
def stock_lc5(self,filepath, name): file_path=filepath+"\\" + name file_size = os.path.getsize(file_path) pos=0 dtype = np.dtype([ ("date_int", np.uint16), ("time_int", np.uint16), ("open", np.float32), ("high", np.float32), ("low", np.float32), ("close", np.float32), ("amount", np.int32), ("volume", np.int32), ("other", np.float32), ]) if(file_size>16000): pos=file_size-16000 with open(file_path, 'rb') as f: f.seek(pos, os.SEEK_SET) data = np.fromfile(f, dtype=dtype) df=pd.DataFrame(data,columns=["date_int","time_int","open","high","low","close","amount","volume","other"]) df['eob']= df.apply(lambda row:self.get_date_str(row["date_int"],row ["time_int"]), axis=1) df.to_csv(file_path+".csv") print(name," convert is done\n")
这速度,真的爽爆了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2012-05-16 VB6 制作 HTTP代理服务器