從 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 個簡單的步驟幫助你入門 。
我希望你發現這個例子和專案很有用。