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

RayStation中Python从枚举数组多行写入CSV的实现问题

问题解决:RayStation脚本导出CSV多行数据

是的,你必须循环遍历data_array才能实现多行写入。

问题原因

csv.writer.writerow()方法的作用是写入一行数据——你给它一个一维序列(比如列表、数组),它会把序列里的每个元素对应到CSV的一个单元格,组成一行。但你直接把整个二维的data_array传给writerow()时,它会把这个二维数组的每一行当作一个单独的单元格值,导致所有ROI的数据都挤在了同一行里。

修改方案

方案1:基于原有代码调整写入逻辑

把原代码的写入部分替换为以下代码:

ptName = patient.Name
mrn = patient.PatientID
fileName = "SBRT Eval " + str(ptName) + "_" + str(mrn) + ".csv"
with open(fileName, 'w') as f:
    writer = csv.writer(f)
    # 写入表头:取header_row的第0行(一维序列)
    writer.writerow(header_row[0])
    # 循环遍历data_array的每一行,逐行写入CSV
    for row in data_array:
        writer.writerow(row)

注意:header_row是你创建的1行8列的二维数组,必须取header_row[0]拿到表头的一维序列,否则表头也会被当成单个单元格。

方案2:改用Python原生列表(更简洁推荐)

RayStation支持标准Python列表,无需使用System.Array.CreateInstance,代码更易读且不易出错。完整修改后的代码如下:

# 获取当前对象
patient = get_current('Patient')
case = get_current('Case')
plan = get_current('Plan')

# 收集ROI数据
planDose = plan.TreatmentCourse.TotalDose
structureSet = plan.GetStructureSet()
roiNames = [r.OfRoi.Name for r in structureSet.RoiGeometries if r.PrimaryShape != None]

# 定义表头(Python列表)
header_row = [
    'ROI', 'Volume [cc]', 'D99 [cGy]', 'D98 [cGy]',
    'D95 [cGy]', 'Average [cGy]', 'D2 [cGy]', 'D1 [cGy]'
]

# 收集所有ROI的数据行
data_rows = []
for roi in roiNames:
    volume = planDose.GetDoseGridRoi(RoiName=roi).RoiVolumeDistribution.TotalVolume
    d99, d98, d95, d2, d1 = planDose.GetDoseAtRelativeVolumes(RoiName=roi, RelativeVolumes=[.99,0.98,0.95,.02,.01])
    average = planDose.GetDoseStatistic(RoiName=roi, DoseType='Average')
    # 将当前ROI的数据组成一行添加到列表
    data_rows.append([roi, volume, d99, d98, d95, average, d2, d1])

# 生成CSV文件
ptName = patient.Name
mrn = patient.PatientID
fileName = f"SBRT Eval {ptName}_{mrn}.csv"
with open(fileName, 'w') as f:
    writer = csv.writer(f)
    writer.writerow(header_row)
    # 使用writerows()一次性写入所有数据行(无需手动循环)
    writer.writerows(data_rows)

这里用writer.writerows()(注意末尾的s)可以一次性写入所有数据行,效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:27:18