如何用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
相关产品推荐
相关产品推荐

