session.run在包含注释的脚本上会失败,对吗?它难道不会把注释去掉吗?
我有一个 .dos 脚本,在DolphinDB GUI中可以正常运行,但在通过Python API的 session.run 执行时会失败。手动删除脚本中的所有注释后,错误就消失。
脚本(简化):
// initialize parameters
start_date = 2024.01.01
end_date = 2024.12.31
/* load data */
t = loadTable("dfs://mydb", "mytable")
select * from t where date between start_date:end_date
Python调用:
with open("my_script.dos", "r") as f:
code = f.read()
s.run(code)
指向注释行的语法错误
使用 session.runFile("my_script.dos") 可以不修改地工作。
session.run 在将代码发送到服务器之前,是否不会移除 // 或 /* */ 注释?如果不是,runFile 是否是执行脚本文件的推荐方法,还是应该在Python端对注释进行预处理?
解决方案
是的。对于文件级的 .dos 脚本,Session.runFile() 是正确的方法。
DolphinDB的 Python API文档将 Session.run(script, ...) 描述为执行一个脚本字符串,而 runFile(filePath) “在服务器上运行本地DolphinDB脚本文件”,重要的一点是路径对Python客户端是本地的。
除非必要,否则我不建议对注释进行预处理。要执行完整的DolphinDB脚本文件,请使用 runFile();把 run() 留给内联片段或表达式。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。