從 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 個簡單的步驟幫助你入門

我希望你發現這個例子和專案很有用。