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

Cinema 4D项目Python脚本如何从CSV文件选取指定行提取数据

你只需要新增一个目标行号的配置,遍历到对应行时读取数据后直接终止循环即可,同时补充行号不存在的异常处理避免报错。

修改后的完整代码如下:

import c4d
import csv

# 配置你需要读取的目标数据行号,默认按【表头后第1行数据为1】的规则计数,可自行修改数值
TARGET_DATA_ROW = 2

def main():
    path = Spreadsheet #Spreadsheet是输入的文件路径参数
    
    # 初始化输出变量默认值,避免行不存在时报未定义错误
    Xcord = Ycord = Langle = Lspeed = 0.0

    with open(path, 'rb') as csv_file:
        readed = csv.DictReader(csv_file, delimiter=',')
        # 遍历行时匹配目标行
        for i, row in enumerate(readed):
            # enumerate索引从0开始,所以目标行号减1就是对应索引
            if i != TARGET_DATA_ROW - 1:
                continue
            try:
                Xcord = float(row["hc_x"])
                Ycord = float(row["hc_y"])
                Langle = float(row["launch_angle"])
                Lspeed = float(row["launch_speed"])
                # 读取到目标行后直接终止循环,不需要继续读取后续行
                break
            except:
                print "目标行读取失败 - {}".format(row)
                break
        else:
            # 循环正常结束没有触发break,说明目标行号超出CSV总行数
            print "指定的行号{}不存在,CSV共{}行有效数据".format(TARGET_DATA_ROW, i+1)

    global Output1
    global Output2
    global Output3
    global Output4

    Output1 = Xcord
    Output2 = Ycord
    Output3 = Langle
    Output4 = Lspeed

修改说明:

  • 新增了TARGET_DATA_ROW配置项,你直接修改这个数值就能指定要读取的行,如果你需要按「索引从0开始」的规则计数,直接把判断条件改成i == TARGET_DATA_ROW即可
  • 新增了变量初始化逻辑,避免行号不存在、行读取失败时出现变量未定义的报错
  • 匹配到目标行读取完成后直接break终止循环,不需要遍历全量CSV,大文件下效率更高
  • 新增了行号不存在、目标行读取失败的提示,方便排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:09:02