C# 到 Python(不是 IronPython)发送和接收数组、Into、字符串、小数
Posted
技术标签:
【中文标题】C# 到 Python(不是 IronPython)发送和接收数组、Into、字符串、小数【英文标题】:C# to Python (not IronPython) Sending and Recieving Array's, Int, String, Decimals 【发布时间】:2017-04-12 00:42:36 【问题描述】:我一直在研究一种简单的方法来启动 Python(不是 IronPython)脚本并传递参数(例如 Array、String、Int、Decimal),然后从 Python 脚本中检索输出(例如数组)。
所有研究都指向不可靠的非常复杂的方法或有限的 IronPython。
如果 VBA 可以通过 xlwings 做到这一点(真的很好),为什么不能在 Visual Studio 中使用 C#?
任何建议、链接或示例都会很有帮助。谢谢
【问题讨论】:
你可以试试pythonnet:github.com/pythonnet/pythonnet 【参考方案1】:正如@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、字符串、小数的主要内容,如果未能解决你的问题,请参考以下文章