sal*_*uce 4 .net c# python ironpython
我有一个.NET项目,我正在使用IronPython来执行一些数据处理.目前,C#代码循环并为每个需要动态计算的行和列生成IronPython脚本.但是,我想通过传入DataTable对象和一个针对它执行的脚本来提高进程的效率.不幸的是,我收到'DataTable' object is unsubscriptable错误,没有处理.
C#片段生成并执行IronPython脚本:
DataTable dt = new DataTable();
dt.Columns.Add("count", typeof(int));
dt.Columns.Add("calc", typeof(int));
dt.Rows.Add(1, null);
ScriptEngine engine = Python.CreateEngine(options);
ScriptScope scope = engine.CreateScope();
scope.SetVariable("dt", dt);
ScriptSource source = engine.CreateScriptSourceFromString(code, SourceCodeKind.AutoDetect);
object result = source.Execute(scope);
DataTable table = scope.GetVariable<System.Data.DataTable>("dt");
Run Code Online (Sandbox Code Playgroud)
要对表执行的Python脚本:
import clr
clr.AddReference('System.Data')
from System import Data
from System.Data import DataTable
for row in dt.Rows:
dt["calc"] = dt["count"] + 1
Run Code Online (Sandbox Code Playgroud)
如何修复'DataTable' object is unsubscriptable错误,还是有更好的方法来处理将DataTable传递给IronPython?
DataTable对象确实是不可取消的,即无法通过索引属性(即dt[index])访问.
你可能意味着这个:
for row in dt.Rows:
row["calc"] = row["count"] + 1
Run Code Online (Sandbox Code Playgroud)
我用dt变量替换变量row.
| 归档时间: |
|
| 查看次数: |
3068 次 |
| 最近记录: |