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

DolphinDB Python API的session.run执行带注释脚本失败,是否不剥离注释?

DolphinDB Python API: session.run无法处理注释、runFile正常的问题解决

核心结论

session.run不会自动剥离脚本中的//单行注释或/* */多行注释,而session.runFile由服务器端直接读取脚本文件,会按照DolphinDB标准语法规则解析注释,因此能正常运行。

原因分析

用Python的open()读取脚本内容再传给session.run时,代码会原封不动发送到DolphinDB服务器。服务器对run接口传入的文本内容,在解析注释时可能因换行符、文本格式等细节出现异常;而runFile让服务器直接读取磁盘上的脚本文件,完全遵循DolphinDB脚本的原生解析逻辑,自然能正确识别并忽略注释。

推荐方案

  1. 优先使用session.runFile
    这是最省心的方式,无需修改脚本,直接调用即可获得和DolphinDB GUI一致的运行效果:
s.runFile("my_script.dos")
  1. 若必须用session.run,在Python端预处理注释
    如果需要动态修改脚本内容(比如替换参数),不得不使用session.run,可以用正则表达式在Python端移除注释:
import re

def clean_dolphindb_code(code):
    # 移除多行注释 /* ... */(DolphinDB不支持嵌套注释,无需考虑嵌套场景)
    code = re.sub(r'/\*.*?\*/', '', code, flags=re.DOTALL)
    # 移除单行注释 // ...
    code = re.sub(r'//.*$', '', code, flags=re.MULTILINE)
    # 清理多余空行
    code = re.sub(r'\n\s*\n', '\n', code)
    return code.strip()

# 使用示例
with open("my_script.dos", "r") as f:
    code = f.read()

cleaned_code = clean_dolphindb_code(code)
s.run(cleaned_code)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 19:22:26