作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在研究一种简单的方法来启动 Python(不是 IronPython)脚本并传递数组、字符串、整数、小数等参数,然后从 Python 脚本中检索数组等输出。
所有研究都指向不可靠的非常复杂的方法或有限的 IronPython。
如果 VBA 可以通过 xlwings 做到这一点(真的很好),为什么不能在 Visual Studio 中使用 C#?
任何建议、链接或示例都会非常有帮助。谢谢
最佳答案
正如@denfromufa 提到的,Pythonnet 是必经之路。以下是如何启动模块并将对象从 C# 传递给它。注意:
numpy
在此作为示例,但您可以将其替换为任何其他模块,甚至是自定义模块。array
对象作为示例显示,但它与 string
、double
、int
完全相同> 等PyScope
直接在 Python 引擎中执行所有操作,因为您的问题是从 C# 到 Python。如果您需要 C# 端的对象,您可以改用 dynamic
类型并使用 Py.Import()
导入模块。using Python.Runtime;
double[] a = [2.1, 3.5, 5.4];
using (Py.GIL())
{
using (PyScope scope = Py.CreateScope())
{
scope.Exec("import numpy as np");
scope.Set("a", a.ToPython())
scope.Exec("b = np.array(a)");
}
}
关于C# 到 Python(不是 IronPython)发送和接收数组、Into、String、Decimals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40841833/
我是一名优秀的程序员,十分优秀!