通达信day格式解析:用Python批量转换行情二进制文件为CSV
简介通达信day格式转CSV的轻量工具面向需要批量处理上证、深证及港股日线数据的量化爱好者与本地投资者。针对股票、基金、港股的不同二进制结构分别处理将stock.exe复制到对应lday目录运行即可生成csv无需额外运行环境附带的C语言源代码便于理解转换逻辑或二次修改。压缩包共2个文件含1个C源码和1个可执行程序整体仅8KB小巧便携。目前已有6297人学习下载适合熟悉通达信目录结构、希望自行解析day文件格式的Python或C开发者参考。虽然仅提供基础csv导出但源码中关于字段偏移与记录长度的处理思路可结合作者《通达信日线day文件格式详解》一文快速上手扩展。1. 通达信day格式文件是什么先把这个二进制黑匣子拆开再谈转换做量化分析或者自建行情库的人迟早会遇到一个绕不过去的坎某天打开数据目录发现全是扩展名为.day的二进制文件每个文件几百KB到几MB直接双击打开全是乱码。这就是通达信day格式文件它是通达信客户端在本地保存的历史日线数据的载体按品种一个文件存一份从沪深A股、港股到场内基金、指数全都有。很多人第一反应是手动打开软件“数据导出”但等你要批量处理几百个品种的时候就会明白手动导出一次点几十下导出格式还带表头带分隔符跟你程序里需要的干净二进制流完全是两回事。这篇文章就围绕“读通该格式、批量转换”这一条主线展开核心是把这个格式的字段排布、字节长度、不同市场的差异一次讲透再给出能直接落地跑的转换脚本和踩坑记录。适合谁来读呢一类是写量化策略、需要把历史日线灌进本地数据库的人另一类是给行情软件做数据迁移或者做多市场数据合并的开发者。读完你能自己写出转换工具而不是到处找别人编译好的exe。先说结论通达信day格式并没有官方公开的完整规格文档网上流传的字段定义来自逆向分析不同券商版本之间存在细微差异这恰恰是转换时最容易翻车的地方。2. day文件的二进制结构拆解日期、开高低收与成交量的字节排布2.1 从一条32字节记录说起字段顺序和类型day文件的存储结构是定长记录市面上绝大多数版本一条记录固定为32字节也就是每次行情更新往文件尾部追加32字节读取时按固定步长跳着读就行。这个定长设计对转换非常友好你在代码里不需要逐字节判断边界直接按记录数循环即可。32字节的内部排布一般长这样前4字节是日期类型为int32格式为整数比如20230101就表示2023年1月1日接着4字节是开盘价注意这里存的是“乘以某个精度后的整数”不是浮点数中间4字节是最高价同样按精度放大存储再4字节是最低价再4字节是收盘价再4字节是成交量单位通常是“股”或“手”不同市场有差异再4字节是成交额单位是“元”最后4字节在某些版本里是保留字段有些版本里放的是涨跌幅或者浮盈数据。用Python的struct模块可以一行写出解析逻辑import struct record_struct struct.Struct(IIIIIIII) # 8个无符号整数小端序 def parse_day_record(raw: bytes) - dict: 解析一条32字节的day记录 raw: 从文件中读取的32字节bytes对象 返回字段字典 fields record_struct.unpack(raw) return { date: fields[0], open: fields[1], high: fields[2], low: fields[3], close: fields[4], volume: fields[5], amount: fields[6], reserved: fields[7] }这段代码的关键在于前缀指定了小端序通达信的数据文件在x86架构的PC上生成字节序是标准的little-endian如果你用去解所有整数值都会错位日期会变成一个天文数字。这是转换工具第一个要写对的地方。参数说明struct格式串里面的I表示无符号32位整数8个I正好对应32字节。字段顺序必须和上面列的一致其中开盘、最高、最低、收盘这四个价格字段不是真实价格是放大后的整数。沪深A股一般情况下除以100就是真实价格也就是保留两位小数的精度。2.2 成交量与成交额的隐含单位问题成交量字段经常让人迷惑原因在于不同市场、不同软件版本对“单位”的处理不一样。沪深A股的普通股票day文件里成交量多数情况记录的是“股”而不是“手”。你如果按“手”去理解数量会差100倍导致后续算换手率、算成交笔均额全部出错。成交额字段相对稳定单位是“元”但要注意它同样是整数。比如某股某天成交了3亿5千万那么文件里存的是3500000000这个整数读出来之后不需要再做浮点处理。港股和基金的情况略有不同。港股的通达信数据价格字段通常不是除以100而是除以1000因为港股价格精度是0.001港元。基金净值则可能涉及4位小数。这里先记住一个原则不要写死“除以100”这个逻辑而是把精度作为可配置参数传入后面批量转换时按品种类型切换精度。def price_from_raw(raw_price: int, market: str) - float: 将day文件中的原始价格整数转换为真实价格 沪深A股和场内基金精度0.01除以100 港股精度0.001除以1000 if market hk: return raw_price / 1000.0 return raw_price / 100.0为什么我建议把market参数单独拎出来而不是在解析函数里做全局判断因为一个转换工具往往同时处理多个目录每个目录对应不同市场如果价格精度写死在函数里一旦目录切换就得出bug。把这个逻辑做成独立小函数也方便你日后扩展债券、期权等其它精度品种。2.3 文件末尾的多余字节与不完整记录读取day文件时有一种常见状况文件总长度不是32的整数倍。出现这种情况的原因通常是客户端正在写数据时被强制退出或者用户直接在数据目录里复制文件时没有完整复制。转换脚本遇到最后残留的十几二十字节不能直接报错终止整个批次正确做法是忽略长度不足32字节的尾部碎片。def iter_day_records(filepath: str): 按32字节逐条读取day文件末尾不足一条的碎片直接忽略 with open(filepath, rb) as f: while True: chunk f.read(32) if len(chunk) 32: break if len(chunk) 32: yield parse_day_record(chunk)注意这里我用的是yield生成器形式好处是处理超大文件时不至于一次性把全部数据载入内存。一个活跃交易了十几年的股票day文件也就几千条记录内存压力不大但港股或基金如果做了多年数据合并文件可能达到几十万条生成器模式可以保证任何规模下内存占用都稳定。3. 用Python写最小转换脚本从单文件落地到CSV3.1 核心转换函数的完整代码现在我们把上面的解析逻辑串成一个最小可用的转换脚本输入是某个.day文件路径输出是同目录下的CSV文件。这个脚本虽然简单但已经覆盖了字节读取、记录解析、字段输出三个必要环节。import csv import struct import sys RECORD_SIZE 32 record_struct struct.Struct(IIIIIIII) def parse_day_record(raw: bytes) - dict: fields record_struct.unpack(raw) return { date: fields[0], open: fields[1], high: fields[2], low: fields[3], close: fields[4], volume: fields[5], amount: fields[6], } def convert_day_to_csv(day_path: str, csv_path: str, price_divisor: float 100.0): day_path: 输入.day文件路径 csv_path: 输出csv路径 price_divisor: 价格精度除数沪深默认100港股传1000 with open(day_path, rb) as fin, open(csv_path, w, newline, encodingutf-8) as fout: writer csv.writer(fout) writer.writerow([date, open, high, low, close, volume, amount]) while True: chunk fin.read(RECORD_SIZE) if len(chunk) RECORD_SIZE: break rec parse_day_record(chunk) writer.writerow([ rec[date], rec[open] / price_divisor, rec[high] / price_divisor, rec[low] / price_divisor, rec[close] / price_divisor, rec[volume], rec[amount] ]) if __name__ __main__: input_file sys.argv[1] output_file sys.argv[2] divisor float(sys.argv[3]) if len(sys.argv) 3 else 100.0 convert_day_to_csv(input_file, output_file, divisor)逻辑说明主流程中while循环按32字节读取读到不足32字节说明文件结束。每条记录拆出的价格字段统一除以price_divisor所以沪深股票直接跑python convert.py sh000001.day sh000001.csv 100即可港股跑python convert.py hk00700.day hk00700.csv 1000。为什么要用newline打开CSV输出因为Python的csv模块在Windows平台上如果不指定newline参数会在每行后多写一个空行导出的文件在Excel里打开时行距异常这是个很小但非常常见的坑。3.2 输出格式的取舍为什么第一版先走CSV有人问为什么不直接输出成Parquet或者直接写数据库。我的建议是第一版先落CSV原因有两个。第一CSV可以直接在Excel、WPS里打开检查转换完随手抽样几行跟通达信软件界面上显示的数字对比能立刻发现精度或字节序问题如果直接写二进制格式错误会被层层封装掩盖排查成本成倍上升。第二后续不管是导数据库还是转ParquetCSV都是最通用的中间格式。你可以在CSV阶段做数据清洗比如去掉日期为0的非法记录、偏离合理的价格极值等清洗完再灌入目标系统整个过程每个环节都可单独校验。如果你批量处理完一大批文件后发现某几只股票的收盘价全是巨大值大概率不是解析错了而是这几种品种其实是“退市整理期”或“停牌”状态原始数据里最后一条记录可能写的是0或异常值。这种数据层面的脏不是二进制解析能解决的转换脚本只负责忠实搬运清洗是下一层的事。3.3 命令行参数设计的工程考虑上面脚本用了sys.argv直接取参够用但在批量场景下不够顺手。实际处理几十个文件时你肯定会写一个外层循环或shell调用这个时候参数的稳定性和错误提示就很重要了。for f in /path/to/day_files/*.day; do python convert.py $f ${f%.day}.csv 100 done这段shell循环把所有.day文件批量转换成同名CSV。注意$f加了双引号防止路径里有空格导致参数被拆成两段。day文件目录里如果混有不同市场的文件上面的循环就不适用了你需要先按目录拆分再对每个目录指定不同price_divisor。我更推荐的做法是写一个配置文件把市场、目录、精度三者绑定在一起转换工具读配置批量执行。这样以后新增品种或者切换数据源只改配置不改代码。很多人在这个环节图省事直接在代码里写死所有路径结果换一台机器或者换一个券商版本就全崩。4. 批量转换沪深A股、港股与基金品种差异与统一转换器设计4.1 三种品种的核心差异对照先明确一下这里的day文件按品种区分一个股票一个文件不会出现“一个文件里混合了多只股票”的情况。所以你面对的批量任务在结构上是一致的只是每个文件的解析参数可能有差异。我把常见的差异点单独列一下方便你对照自己的数据来源品种类型目录特征价格精度成交量单位常见异常沪深A股形如sh600000.day / sz000001.day0.01除以100股停牌期间无交易可能无记录港股形如hk00700.day0.001除以1000股收盘价含竞价时段数据需注意场内基金(ETF/LOF)如sh510300.day0.001~0.01份净值价格低单价精度影响大场外基金部分版本存为fund开头0.00014位精度份净值字段可能放在保留区注意表格里的场外基金精度这是很多人在批量转换后核对净值时发现对不上的原因场外净值通常保留4位小数而沪深股票只保留2位。你的转换器需要支持按文件前缀或目录来判定品种自动选择精度。港股的价格精度问题更隐蔽。部分港股股价较高比如几百港元的品种实际成交价位可能到0.05港元但day文件里统一按0.001精度存储转换完会看到很多条记录出现“198.350”这种三位小数。这是正确结果不是bug。4.2 统一转换器的结构设计我一般会把转换器设计成三层最底层是字节解析模块中间是品种参数映射最上层是批量调度入口。这样拆的好处是当某个券商版本改了字段结构你只需要替换最底层整个批量流程不受影响。import os import csv import struct MARKET_CONFIGS { a_share: {suffix: (.day), divisor: 100.0, volume_unit: 股}, hk: {suffix: (.day), divisor: 1000.0, volume_unit: 股}, etf: {suffix: (.day), divisor: 1000.0, volume_unit: 份}, } def process_directory(input_dir: str, output_dir: str, market_type: str): input_dir: day文件所在目录 output_dir: CSV输出目录 market_type: 取值为a_share / hk / etf cfg MARKET_CONFIGS[market_type] for fname in os.listdir(input_dir): if not fname.endswith(.day): continue src_path os.path.join(input_dir, fname) dst_path os.path.join(output_dir, fname.replace(.day, .csv)) convert_day_to_csv(src_path, dst_path, cfg[divisor])这个批处理函数目前没有校验文件是否损坏也没有记录哪些文件转换成功、哪些失败。在纯演示场景没问题但真拿去处理6000多个文件肯定会遇到损坏文件。所以我通常会在外层加一个判断文件大小除以32是否为整数不是则打印警告信息并把文件名记录到error.log后续单独排查。日志这东西一定要有哪怕只是把失败的文件名写入文本文件。否则处理完几千个文件后你根本不知道哪个品种的数据是缺的复盘时无从下手。这也是一个容易被轻视的工程环节。4.3 指数文件与普通股票文件的不同语义通达信day文件目录里还会有指数文件比如上证指数、深证成指文件命名通常带ix或者index字样。指数数据的字段语义跟普通股票略有差别最典型的是成交量单位指数成交量记录的是“手”还是“股”不同版本处理不一致而且指数的“成交额”通常是全市场累计数字非常大。处理指数数据时价格字段精度逻辑不变但成交量统一性问题更突出。有的版本会把上证指数成交量存为“手”为单位有的直接存“股”转换后做跨品种对比前必须先统一口径。我处理某图像处理Demo里的指数数据时就遇到过这个情况当时把上证综指和某只个股放在同一个数据集里没有单独处理成交量单位导致后续的量价相关性分析出现明显偏差。排查了很久才定位到是单位不一致。4.4 自定义行情软件的day文件读取不受版本影响的方法另外一个思路是用通达信自己的“数据维护”功能先把数据导出成文本格式再让程序读取文本。但这个方案有两个缺点一是无法自动化批量处理因为界面上需要手动操作二是导出的文本格式会带上你本地的除权设置得到的是“复权后价格”而不是原始价格。所以如果你需要原始复权因子直接解析.day文件是唯一选择。day文件里存的是不复权的原始价格复权计算需要另外拿除权除息的数据。这一点在转换设计时就要明确转换出来的CSV代表“不复权原始行情”任何基于它的回测都需要自行处理复权。5. day格式转换避坑指南5个高频翻车点与排查方式5.1 字节序用错的翻车现场日期全部变成奇怪的大数有次某开发者A同学写转换脚本从网上找的解析代码直接复制过来跑出来的CSV里日期全是20亿以上的数字。原因就是那段代码用了网络序解析而通达信文件是本地小端序。排查方法很直接取第一条记录用十六进制查看器看前4字节如果看到类似00 00 00 00后面跟日期数那就是小端如果字节序反了前4个字节会呈现出完全乱序的特征。这个问题一旦出现整批文件全废好在修复只改一个字符把换成即可。防御性写法不要裸用struct封装一个parse_day_record函数内部写死小端格式串所有调用方统一走这个函数防止有人复制代码时把格式串抄错。5.2 记录长度不是32字节的历史版本并不是所有券商版本都使用32字节记录。我在某公司处理一批老历史数据时发现某些文件的记录长度是29字节也就是说每条记录后少了3个字节的保留位。如果你的转换脚本只按32读从第一条记录开始就错位后面的所有字段全部错乱而且这种错乱不报错因为程序不会因为字节不对齐而崩溃。排查方式很简单用os.path.getsize(filepath) % 29和% 32分别做整除判断看哪一种余数为0。如果余数两种情况都为0那就需要抽样解析后对比软件里的真实行情数据来判断真实长度。解决方案是做一个自动探测函数先读文件大小做整除测试优先尝试32失败再尝试29。不过29字节版本非常少见我认为没必要做成通用兼容除非你确定自己的数据来源来自老版本券商客户端。5.3 除权日跳空导致数据“看起来像损坏”股票除权除息当天价格会向下跳空比如十送十的票除权日开盘价直接腰斩。很多人在转换后做数据质检时看到这种巨大的价格断层第一反应是转换出错但其实day文件存的就是原始价除权跳空是正常现象。这个问题本质不是转换问题而是数据处理策略问题。建议在转换阶段不做任何平滑修正保留原始跳变在后续计算收益率时再引入复权因子。如果你在转换阶段就把除权日跳空当作脏数据用线性插值填充后续做任何因子计算都会引入虚假信息。排查方法与结论当转换结果中出现价格腰斩或暴涨先查该股公告的除权除息日日期如果正好对应那么数据是正常的。除非你做的是技术指标指标回测需要连续价格序列否则不要动它。5.4 基金净值精度与价格精度混为一谈场外基金净值的day文件价格字段经常是4位小数。有人用沪深股票的逻辑直接除以100结果看到净值全是几十块钱明显异常。比如某基金净值1.2345文件里存的是12345除以100得到123.45这就说明精度判断错了。解决办法是在转换前读一下文件名或目录结构里的基金类型标识。一般通达信的数据目录会区分股票、基金、债券子目录不同子目录对应不同精度配置。在批处理代码里直接把子目录名映射到price_divisor不要通过“读取文件内容猜测精度”因为猜测精度很容易被异常行情数据误导。5.5 交易所对停牌股票的处理差异缺失记录还是零记录A股停牌期间通常不产生新的day记录所以停牌期间文件里表现为“没有这一天的数据”而不是“当天数据为0”。但港股偶尔会出现“停牌当天记录存在、开高低收全是0”的情况。两者在转换后的CSV里特征完全不同前者是日期缺失后者是价格全零。如果后续处理程序按“逐日连续”读取数据遇到停牌缺失的A股记录可能会自动产生NaN或前向填充逻辑错乱。我的建议是在转换阶段为每个品种输出记录的同时额外生成一个“日期存在性标记”文件或者直接在CSV里按日期排序后检查两行之间的日期间隔。不能让后续机器学习模型从零价格中学习到“该股当天跌了100%”这种虚假模式。6. 增量转换与数据校验转换结果准不准的验证手段实际工作中很少人只需要一次性转换全部历史数据。行情数据每天收盘后都会更新day文件不停追加新记录全量重新转换虽然耗时不多但会覆盖你手工修正过的数据。更好的做法是增量转换先把已有CSV的最后日期读出来然后只解析day文件里日期大于该日期的记录循环追加。这个思路的代码实现不复杂但有一个前置条件你要确认day文件里的记录是按日期递增排列的。绝大多数情况下确实如此但如果你曾经手动复制过历史数据文件或者做了数据修复顺序可能被打乱。所以在增量转换逻辑中必须对最后一条日期的位置做校验。如果发现新读取的日期小于已有日期要立即停止并报告异常而不是强行追加否则CSV里会出现时序倒错。def incremental_convert(day_path: str, csv_path: str, divisor: float): 增量转换从day文件中读取最新记录追加到已有CSV 自动跳过已转换过的老日期 last_date None if os.path.exists(csv_path): with open(csv_path, r, encodingutf-8) as f: last_line f.readlines()[-1] last_date int(last_line.split(,)[0]) records list(iter_day_records(day_path)) with open(csv_path, a, newline, encodingutf-8) as f: writer csv.writer(f) for rec in records: if last_date is not None and rec[date] last_date: continue writer.writerow([rec[date], rec[open] / divisor, rec[high] / divisor, rec[low] / divisor, rec[close] / divisor, rec[volume], rec[amount]])转折点在于增量转换的核心不是“读取”而是“确定边界”。边界确定错了多读几条重复数据问题不大漏读几条就是数据缺失了。保险做法是保留一个meta.json文件记录每次增量转换完成后的文件大小和最后日期下一次转换时先比对文件大小如果day文件大小比meta记录还小说明有人重写过历史数据这时就不能走增量逻辑必须全量重转。最后说一个数据校验的土办法但非常有效抽样比对。每次转换完随便挑三五个品种用通达信软件打开对应K线图对照最近5天的最高价和最低价人工核对一遍。这个习惯我坚持了很久虽然原始但能发现绝大多数转换逻辑错误。程序上的校验指标比如记录总数、日期范围、价格区间是否有负数这些可以作为辅助手段加入自动化流程但人工抽样始终是最可靠的兜底。说个我的习惯任何转换工具上线后我都会留一份小样本基准文件里面保存已知正确的10条记录放在测试用例中。每次改了代码先跑这个小样本输出的CSV与基准文件逐字节对比。这比每次全量转换后检查省太多事了。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

FFmpeg API 实战:读取视频信息与避坑指南

FFmpeg API 实战:读取视频信息与避坑指南

FFmpeg 这个库,做音视频开发的没人绕得开。但很多人第一次翻开它的头文件,看到AVFormatContext、AVCodecParameters、AVStream这一堆结构体,第一反应是懵的——文档少、示例老、API 还老变。我当初也是这样,为了拿一个视频的宽高和…

2026/10/16 11:06:00 阅读更多 →
操作系统隔离与系统调用全链路:从用户态到内核态的穿越

操作系统隔离与系统调用全链路:从用户态到内核态的穿越

6.S081这门操作系统课程讲到第三讲,终于开始触及最核心的部分:OS organization和system calls。前面几讲我们在用户态这边打转,fork、exec、wait这些系统调用用得很熟,但很少认真想过一个问题——你随手调一个write(),…

2026/10/16 11:04:59 阅读更多 →
多智能体协作新范式:DeepSeek Harness集成Codex与Claude Code实战

多智能体协作新范式:DeepSeek Harness集成Codex与Claude Code实战

一眼看到这次更新的标题,我先是愣了一下——把 Codex、Claude Code 直接做成官方插件,这不再是"自己改造工具链"的玩法,而是把多个编程代理放进同一个调度框架里当子智能体用。我前阵子刚把一批并行任务从单代理切到多代理协作&…

2026/10/16 11:04:59 阅读更多 →

最新新闻

C#.NET整合微信支付宝银联支付:回调验签与统一网关实践

C#.NET整合微信支付宝银联支付:回调验签与统一网关实践

简介:面向C# .NET开发人员的多支付渠道整合方案,聚焦微信、支付宝与银联支付在统一业务后台中的接入与协同。内容覆盖微信JSAPI、Native、H5、APP,支付宝网页支付、APP支付、扫码支付,以及银联网上支付、快捷支付等典型场景&#…

2026/10/16 13:51:34 阅读更多 →
OpenCV 4.5.1环境搭建:源码编译contrib与VS2019配置完整指南

OpenCV 4.5.1环境搭建:源码编译contrib与VS2019配置完整指南

简介:面向使用 VS2019 搭建 OpenCV 4.5.1 扩展开发环境的学习者,尤其是被 CMake 配置、opencv_contrib 模块缺失反复卡住的新手。作者将耗时五天的踩坑过程整理为可直接复用的现成环境包:下载 zip 并解压后,按配套博文步骤配置&am…

2026/10/16 13:51:34 阅读更多 →
GPOPS2高精度最优控制求解原理与MATLAB实战

GPOPS2高精度最优控制求解原理与MATLAB实战

简介:本资源是面向控制工程、航空航天及优化算法研究者的GPOPS2数值优化工具包,专为解决多阶段动态优化问题设计,尤其适用于飞行器轨迹规划、机器人路径设计与航天器轨道优化等高精度建模场景,需具备MATLAB编程基础与非线性优化理…

2026/10/16 13:51:34 阅读更多 →
2026年国内AI大模型API聚合平台排名前十推荐:实测选型与避坑指南

2026年国内AI大模型API聚合平台排名前十推荐:实测选型与避坑指南

两个前提,先立规矩 这类榜单文章满天飞,先把话说明白:其一,拒绝营销套路,额度虚标、服务停摆风险、变相收费一律过滤;其二,拒绝参数堆砌,只看三样东西——真实到账价格、实际响应速度…

2026/10/16 13:51:34 阅读更多 →
从RISC-V到全国产载板:嵌入式核心板推荐中值得关注的众达科技进迭时空K3方案

从RISC-V到全国产载板:嵌入式核心板推荐中值得关注的众达科技进迭时空K3方案

国产嵌入式算力重构背景下的核心板选型困惑2026年,工业控制、边缘计算、装备信息化以及具身智能等设备端场景,正在把「嵌入式核心板」从传统配套器件推到系统架构的中心位置。过去很长一段时间里,核心板选型往往沿用x86或进口ARM生态的成熟方…

2026/10/16 13:51:34 阅读更多 →
上位机软件架构设计:分层思路与通信层实践

上位机软件架构设计:分层思路与通信层实践

上位机软件架构设计,说穿了就是解决一件事:让一台天天连设备、发指令、收数据的电脑程序,能经得起需求变化和长期维护。我做了几年的设备上位机开发,从最开始“界面上一堆按钮,背后全塞在一起”的小工具,到…

2026/10/16 13:50:33 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →