跳转至

← 返回接口目录

7709-服务器文件读取

作用

0x06b9 是通达信服务器文件读取命令。eltdx 提供单块读取、扁平便捷入口、整文件下载和已知格式解析四种调用方式;底层仍只解析传输块。

层级 调用方法 返回 职责
主要调用 client.resources.read(path, offset=0, size=30000) FileContentChunk 发起一次 0x06b9 请求,解析长度头和原始文件块
便捷调用 client.read_server_file(path, offset=0, size=30000) FileContentChunk 使用扁平入口读取同一个服务器文件块
完整下载 client.resources.download_file(path, chunk_size=30000) bytes 按实际返回长度推进偏移,循环拼接全部文件块
下载并解析 client.resources.read_stats() TdxStatsResource 下载 zhb.zip,解压并按 GBK 解析 tdxstat.cfgtdxstat2.cfg

底层接口:0x06b9read_stats() 是该命令的上层便捷调用,不是新的二进制命令。

示例

读取单个文件块

from eltdx import TdxClient

with TdxClient(timeout=3) as client:
    chunk = client.read_server_file("zhb.zip", offset=0, size=30000)
    print(chunk.chunk_len, chunk.is_last)

下载完整文件

with TdxClient(timeout=3) as client:
    payload = client.resources.download_file("zhb.zip")
    print(len(payload))

解析 zhb.zip

with TdxClient(timeout=3) as client:
    stats = client.resources.read_stats()
    stat, stat2 = stats.row(0, "000001")  # 0=深圳,1=上海
    print(stats.stats_date, stat, stat2)

如果已经取得 ZIP bytes,可以只调用纯解析函数:

from eltdx.stats import parse_tdx_stats_archive

stats = parse_tdx_stats_archive(payload, source_path="local://zhb.zip")

文件块参数

参数 含义
path 服务器文件路径;必须是 ASCII,最长 300 字节,反斜杠会转成 /
offset 文件读取偏移,uint32,默认 0
size 单块请求字节数,范围 1..60000,默认 3000060000 是服务端单次响应上限
chunk_size 整文件下载使用的块大小,范围同 size
max_bytes download_file() 可选的下载字节上限;用于只取文件前缀或限制内存占用

当文件长度恰好是 chunk_size 的整数倍时,下载器会再请求一次并在收到空块后结束。

文件块返回字段

FileContentChunk 字段 含义
path 规范化后的服务器路径
offset 本次读取偏移
request_size 本次请求字节数
chunk_len 服务端实际返回字节数
content 文件块原始 bytes
raw_payload 包含长度头的原始响应 payload
is_last chunk_len < request_size 时为 True

tdxstat.cfg 解析字段

每行以 | 分隔,至少 35 列。列号从 0 开始,短行会跳过。

列号 TdxStatRow 字段 含义
0 market_id 市场编号,通常 0=深圳1=上海
1 code 六位证券代码
2 beta_60d 60 日 Beta
3 pe_ttm 滚动市盈率
4 stats_date 统计日期,格式通常为 YYYYMMDD
11 free_float_shares_10k 自由流通股本,单位万股
26 year_limit_up_days 年内涨停天数
31 limit_stat_days 连板统计窗口天数
32 limit_up_count_in_stat_days 统计窗口内涨停次数
33 limit_up_streak_days 连续涨停天数

tdxstat2.cfg 解析字段

每行以 | 分隔,至少 21 列。

列号 TdxStat2Row 字段 含义
0 market_id 市场编号
1 code 六位证券代码
2 stats_date 统计日期
3 amount_10k 当日成交额,单位万元
4 seal_amount_10k 当日封单金额,单位万元
5 prev_amount_10k 前一日成交额,单位万元
6 prev_seal_amount_10k 前一日封单金额,单位万元
7 prev2_amount_10k 前两日成交额,单位万元
8 prev2_seal_amount_10k 前两日封单金额,单位万元
9 open_volume_hand 当日开盘成交量,单位手
10 prev_open_volume_hand 前一日开盘成交量,单位手
14 open_amount_10k 当日开盘成交额,单位万元
15 prev_open_amount_10k 前一日开盘成交额,单位万元

空白或无法转换的数值字段返回 NoneTdxStatsResource.statstat2 都以 (market_id, code) 为键;row(market_id, code) 可同时取得两个文件中的对应记录。stats_date 是全部有效记录中出现次数最多的日期。

格式校验边界

解析器会校验 ZIP 大小、条目数量、加密条目、解压后大小、两个必需 CFG 是否各存在一份,以及同一 CFG 内是否有重复证券键。它不强制完整文件必须达到特定行数或日期覆盖率,也不负责判断两个 CFG 的业务日期是否可用于某个交易日。

解析过程不会写入磁盘,也不包含 AxData 的缓存、文件锁、失败退避、自动刷新和交易日对齐策略。

0x06b9 可以读取其他服务器文件,但 eltdx 不会猜测任意文件的格式。除 zhb.zip 外,调用者通过 read()download_file() 取得原始 bytes 后自行处理。