C#如何用最簡單方法呼叫Python?

翔星發表於2024-05-21

最近有群友諮詢C#如何呼叫Python?小編嘗試Python.NET過程中遭遇的版本相容性和環境配置難題,小編決定尋找一個更為簡單、穩定且對初學者友好的解決方案。小編搜尋一番,除了Python.NET之外,還有其他途徑能夠幫助我們輕鬆地在C#專案呼叫Python指令碼,那就是透過命令列呼叫,使用 System.Diagnostics.Process 類可以啟動 Python 程序,並透過命令列引數傳遞指令碼路徑等資訊。呼叫流程如下:

1、環境準備

在作業系統中安裝好python,最好3.0以上版本;然後新建一個.NET8控制檯程式,不需要引用任何元件;最後新建一個python檔案用來測試,用txt新建並另存為py檔案就可以。程式碼如下:

#定義一個數字列表
numbers = [10, 20, 30, 40, 50]

#呼叫內建函式進行聚合
sum_of_numbers = sum(numbers)  # 求和

print('上面陣列求和為:',sum_of_numbers)

print('歡迎關注公眾號:Dotnet開發跳槽!');

2、透過命令列呼叫Python

此方法的核心思想是,C#程式透過System.Diagnostics名稱空間下的Process類來啟動Python直譯器,並向其傳遞Python指令碼的路徑及必要的引數。程式碼如下:

using System.Diagnostics;

using (Process process = new Process())
{
    process.StartInfo.FileName = "python";
    process.StartInfo.Arguments = "E:\\lea\\python\\demo.py";
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.Start();
    string result = process.StandardOutput.ReadToEnd();
    process.WaitForExit();
    Console.WriteLine(result);
}

效果如下:

優勢與侷限

優勢:該方法簡單直觀,對環境的依賴較少,不需要安裝額外的庫或元件,特別適用於環境配置複雜或版本相容性問題突出的情況。

侷限:相比直接的庫整合(如Python.NET),這種方法犧牲了一定的效能,特別是在頻繁的互動場景下,每次呼叫都需要啟動新的Python程序。此外,資料交換主要透過文字輸出,處理大量或複雜資料結構時不夠高效。大家使用Python.NET成功沒有?歡迎分享經驗。

結語

本文講述了C#如何用最簡單呼叫Python的方法,透過命令列呼叫Python。它能夠快速搭建起C#與Python之間的通訊橋樑,尤其適合快速驗證概念或進行初步整合測試。在大模型時代,Python學習的必要性增大,尤其是.NET開發,C#中呼叫Python大大降低了學習成本。對於在C#中呼叫Python大家還有什麼好的方法,歡迎留言討論。

來源公眾號:DotNet開發跳槽    

相關文章