You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将STDF转换为CSV?pystdf模块转换失败求助

如何用Python将STDF文件转换为CSV文件?

你的代码问题在于直接把所有STDF记录存入DataFrame——STDF文件包含多种结构完全不同的记录类型(比如文件头、测试元数据、测试结果等),混合存入会导致字段错位、数据缺失,最终转换出的CSV无法正常使用。

下面是修正后的代码,针对STDF的特性做了适配,以提取测试结果记录(PTR)为例:

import pandas as pd
import pystdf
from pystdf import RecordTypes

def convert_stdf_to_csv(input_file, output_file):
    stdf = pystdf.STDF(input_file)
    target_records = []
    
    # 遍历所有STDF记录,筛选目标类型(这里选测试结果记录PTR)
    for record in stdf.records():
        # 匹配测试结果记录类型,可根据需求替换为其他类型(如PRR参数结果)
        if record.rec_type == RecordTypes.PTR:
            # 将记录转换为字段-值对应的字典
            record_dict = {field: getattr(record, field) for field in record.field_names}
            target_records.append(record_dict)
    
    if not target_records:
        print("未找到符合条件的记录,请检查记录类型是否正确")
        return
    
    # 生成DataFrame并保存为CSV
    df = pd.DataFrame(target_records)
    df.to_csv(output_file, index=False)
    print(f"转换完成,文件已保存至 {output_file}")

# 替换为你的输入输出路径
input_stdf_file = "input.stdf"
output_csv_file = "output_file.csv"

convert_stdf_to_csv(input_stdf_file, output_csv_file)

关键说明:

  • 筛选记录类型:STDF的每种记录都有对应的类型标识,比如RecordTypes.PTR对应测试结果记录,RecordTypes.PRR对应参数结果记录,你可以根据需求调整判断条件。如果需要同时处理多种记录类型,建议分别收集后再合并(注意字段对齐,可使用pd.concat([df1, df2], join='outer'))。
  • 字段提取:通过record.field_names获取当前记录的所有有效字段,再用getattr提取对应值,确保每个字典的结构一致,避免DataFrame字段混乱。
  • 空记录处理:添加了空记录判断,避免生成空CSV文件。

内容的提问来源于stack exchange,提问作者jagan k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 05:42:16