从 C#调用 Python
请注意,在上面的示例中,使用可以通过 NuGet 管理器安装的 MongoDB.Bson 库来序列化数据。
否则,你可以使用你选择的任何 JSON 序列化库。
以下是进程间通信实现步骤:
-
输入参数被序列化为 JSON 字符串并保存在临时文本文件中:
BsonDocument argsBson = BsonDocument.Parse("{ 'x' : '1', 'y' : '2' }"); string argsFile = string.Format("{0}\{1}.txt", Path.GetDirectoryName(pyScriptPath), Guid.NewGuid());
-
Python 解释器 python.exe 运行 python 脚本,该脚本从临时文本文件和后退输入参数读取 JSON 字符串:
filename = sys.argv[ 1 ] with open( filename ) as data_file: input_args = json.loads( data_file.read() ) x, y = [ float(input_args.get( key )) for key in [ 'x', 'y' ] ]
-
执行 Python 脚本并将输出字典序列化为 JSON 字符串并打印到命令窗口:
print json.dumps( { 'sum' : x + y , 'subtract' : x - y } )
-
从 C#应用程序读取输出 JSON 字符串:
using (StreamReader myStreamReader = process.StandardOutput) { outputString = myStreamReader.ReadLine(); process.WaitForExit(); }
https://i.stack.imgur.com/zDdC1.jpg
我在我的一个项目中使用 C#和 Python 脚本之间的进程间通信,允许直接从 Excel 电子表格调用 Python 脚本。
该项目利用 ExcelDNA 加载项进行 C# - Excel 绑定。
源代码存储在 GitHub 存储库中 。
以下是维基页面的链接,这些页面提供了项目的概述,并通过 4 个简单的步骤帮助你入门 。
我希望你发现这个例子和项目很有用。