从 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 个简单的步骤帮助你入门

我希望你发现这个例子和项目很有用。