当前位置: 首页 > ds >正文

Python项目源码69:一键解析+csv保存通达信日线数据3.0

Python项目源码39:学生积分管理系统1.0(命令行界面+Json)

Python项目源码38:模拟炒股系统2.0(tkinter+Json)

Python项目源码35:音乐播放器2.0(Tkinter+mutagen)

Python项目源码33:待办事项列表应用2.0(命令行界面+Json+类)

Python项目32:订单销售额管理系统1.0(Tkinter+CSV)

Python项目源码29:学生缴费管理系统(Tkinter+CSV)

Python项目28:设计日志管理系统2.0(Tkinter+Json)

Python项目26:设计学生成绩管理系统(简易版)
一键解析通达信目录下的所有股票日线数据,解析好的数据全部放在股票数据文件夹里面。
在这里插入图片描述
Python代码解析的运行过程
在这里插入图片描述

# -*- coding: utf-8 -*-
# @Author : 小红牛
# 微信公众号:WdPython
import os
import struct
import pandas as pd# 1.获取目录下的所有文件路径
def get_tdx_file_paths(tdx_dir):# 获取通达信日线文件路径列表day_files = []for market in ['sh', 'sz', 'bj']:lday_dir = os.path.join(tdx_dir, market, 'lday')if not os.path.exists(lday_dir):continuefor fname in os.listdir(lday_dir):#  只取以60开头的股票,不取这个目录下的指数或其他if fname.startswith(('sh60', 'sh68', 'sz00', 'sz30', 'bj83', 'bj87', 'bj83', 'bj92')):# 2. if fname.endswith('.day') and fname in ['sh6', 'sz0', 'bj']:day_files.append(os.path.join(lday_dir, fname))return day_files# 2.解析日线数据
def parse_tdx_day_file(data_path):data_list = []with open(data_path, 'rb') as f:while True:data = f.read(32)if len(data) != 32:break  # 文件结束或数据不完整# 使用小端字节序解析数据,格式:5I(日期和价格) + f(成交额) + 2I(成交量和保留)unpacked = struct.unpack('<5If2I', data)# 解析各字段date_int = unpacked[0]year = date_int // 10000month = (date_int % 10000) // 100day = date_int % 100date_str = f"{year}-{month:02d}-{day:02d}"open_price = unpacked[1] / 100.0  # 开盘价high_price = unpacked[2] / 100.0  # 最高价low_price = unpacked[3] / 100.0  # 最低价close_price = unpacked[4] / 100.0  # 收盘价amount = unpacked[5]  # 成交额(元)volume = unpacked[6]  # 成交量(股)data_list.append([date_str,open_price,high_price,low_price,close_price,amount,volume])# 转换为DataFrame(列名首字母大写)df = pd.DataFrame(data_list,columns=['Date', 'Open', 'High', 'Low', 'Close', 'Amount', 'Volume'])df['Date'] = pd.to_datetime(df['Date'])df.sort_values('Date', inplace=True)df.reset_index(drop=True, inplace=True)return dfif __name__ == '__main__':os.makedirs('股票数据', exist_ok=True)tdx_dir = 'E:/zd_cjzq/vipdoc'  # 修改为你的通达信目录file_paths = get_tdx_file_paths(tdx_dir)for file_path in file_paths:print('正在解析以下目录数据'.center(50, '-'))print(file_path)# 解析并保存df = parse_tdx_day_file(file_path)print('后5行数据预览:'.center(30, '-'))print(df.tail(5))stock_code = os.path.basename(file_path).split('.')[0][-6:]output_path = os.path.join('股票数据', f"{stock_code}.csv")# print(output_path)df.to_csv(output_path, index=False)  # 不保存行索引print(f"数据已保存,在股票数据文件夹中!!")

完毕!!感谢您的收看

----------★★跳转到历史博文集合★★----------
我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame

http://www.xdnf.cn/news/3699.html

相关文章:

  • C++map和set
  • linux指令中的竖线(“|”)是干啥的?【含实例展示】
  • HTTP 状态码详解:用途与含义
  • QMK固件中LED指示灯与RGB灯详解指南
  • MySQL初阶:数据库基础,数据库和表操作,数据库中的数据类型
  • 组件通信-自定义事件
  • 基于SpringBoot+Vue实现的电影推荐平台功能一
  • SpringBoot基础(原理、项目搭建、yaml)
  • 【quantity】6 温度单位实现(temperature.rs)
  • wfp CommandParameter 详细解说
  • 数字智慧方案6190丨智慧应急综合平台解决方案(49页PPT)(文末有下载方式)
  • 开发规范-Restful
  • Android面试总结之jet pack模块化组件篇
  • GoogleTest:TEST_F
  • Proxmox VE 8.4 显卡直通完整指南:NVIDIA 2080 Ti 实战
  • 【OFDM过程中正交子载波特性的应用及全面解析】
  • C++负载均衡远程调用学习之HOOK注册机制
  • deepseek 技巧整理
  • 《Java高级编程:从原理到实战 - 进阶知识篇三》
  • 【算法应用】基于鲸鱼优化算法WOA求解VRPTW问题
  • Oracle无法正常OPEN(三)
  • ARConv的复现流程
  • btrace2.0使用方法
  • 基于FastApi实现本地部署DeepSeek-R1-Distill-Qwen与流式输出
  • 文章四《深度学习核心概念与框架入门》
  • 读书记:《认知红利》
  • 云盘系统设计
  • Vue3+Element Plus全套学习笔记-目录大纲
  • UE自动索敌插件Target System Component
  • MAAS Anvil - 高可用 MAAS 部署管理工具