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

如何批量将100份X射线散射.dat文件转换为带指定表头的.csv文件

批量转换X射线散射.dat文件为.csv的实现方案

前置说明

确保所有待转换的.dat文件存放在同一个目录下,本地环境已安装pandas库。

完整实现代码

import os
import pandas as pd

# 可修改配置项
dat_dir = "./your_dat_path"  # 替换为.dat文件所在的文件夹路径
output_dir = "./converted_csv" # 转换后.csv文件的保存路径
headerList = ['q(A^-1)', 'I(q)', 'sqrt(I(q))']

# 自动创建输出目录,已存在时不报错
os.makedirs(output_dir, exist_ok=True)

# 遍历所有.dat文件执行转换
for file_name in os.listdir(dat_dir):
    # 仅处理后缀为.dat的文件
    if file_name.lower().endswith(".dat"):
        # 拼接完整文件路径
        full_dat_path = os.path.join(dat_dir, file_name)
        # 读取.dat文件:跳过前11行%开头的元数据,按空白符分割列
        df = pd.read_csv(
            full_dat_path,
            skiprows=11,
            sep="\s+",
            header=None
        )
        # 生成对应.csv文件名,保留原始文件名前缀
        csv_name = os.path.splitext(file_name)[0] + ".csv"
        full_csv_path = os.path.join(output_dir, csv_name)
        # 导出为.csv,添加指定表头、不保留索引列
        df.to_csv(full_csv_path, header=headerList, index=False)
        print(f"已转换:{file_name} → {csv_name}")

# 统计处理总数
total = len([f for f in os.listdir(dat_dir) if f.lower().endswith(".dat")])
print(f"全部转换完成,共处理{total}个文件")

关键逻辑说明

  • 自动过滤非.dat格式文件,避免误处理目录下的其他文件
  • 针对你提供的.dat格式设置skiprows=11,直接跳过头部元数据读取数值部分;如果不同文件的注释行数不一致,可以把skiprows参数替换为skiprows=lambda x: str(x).startswith('%'),自动跳过所有%开头的注释行
  • 转换后的文件保留原始文件名前缀,仅替换后缀为.csv,方便对应原始数据
  • 输出文件统一存放在指定目录,不会打乱原始.dat文件的存储结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:57:01