SPC Reader — SPC 光谱文件解析
负责 解析读取 SPC 格式文件。基于 pyspectra 库的 read_spc_dir 封装。
何时使用
- 用户要读取单个
.spc文件或某个文件夹下的一批.spc文件 - 需要把 SPC 光谱转成
pandas.DataFrame(行=光谱样本,列=波数) - 需要提取 SPC 元信息(采集时间、波数范围等)
- 需要将 SPC 数据导出为 CSV
依赖
pip install pyspectra pandas
数据模型
read_spc_dir(folder) 返回两个对象:
df_spc:DataFrame,每一行是一条光谱样本,每一列是一个波数(wavenumber),值为强度。len(df_spc)= 样本数,len(df_spc.columns)= 波数点数。dict_spc:dict,每个 SPC 文件对应的元信息(文件名 → 元数据)。
用法
{{SKILL_DIR}}/scripts/read_spc.py 是可直接运行的解析脚本。
读取一个文件夹下的所有 SPC
python {{SKILL_DIR}}/scripts/read_spc.py --dir "path/to/spc_folder"
读取并导出为 CSV
python {{SKILL_DIR}}/scripts/read_spc.py --dir "path/to/spc_folder" --out "spectra.csv"
递归查找含 .spc 的文件夹并逐个读取
python {{SKILL_DIR}}/scripts/read_spc.py --root "path/to/data" --keyword sample
在代码中调用
from read_spc import load_spc_data, find_folders_with_spc
# 单个文件夹
df_spc, dict_spc = load_spc_data("path/to/spc_folder")
print(df_spc.shape) # (样本数, 波数点数)
print(df_spc.columns[:5]) # 前 5 个波数
# 批量查找文件夹
folders = find_folders_with_spc("path/to/data", keyword="sample")
for folder in folders:
df_spc, dict_spc = load_spc_data(folder)
关键实现要点
- 用
read_spc_dir会读取文件夹内 所有.spc文件并合并为一个 DataFrame;文件按文件名排序决定行顺序。 pyspectra读取时会向 stdout 打印大量日志,脚本用redirect_stdout(os.devnull)静默处理。- 判断文件夹是否有效:
any(f.lower().endswith('.spc') for f in os.listdir(folder))。