欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#使用IronPython調(diào)用Python

 更新時(shí)間:2023年07月07日 11:47:33   作者:熊思宇  
這篇文章主要給大家介紹了關(guān)于C#使用IronPython調(diào)用Python的相關(guān)資料, c#利用IronPython調(diào)用python的過(guò)程中總會(huì)遇到種種問(wèn)題,這里給大家總結(jié)下,需要的朋友可以參考下

一、簡(jiǎn)介

IronPython 是一種在 NET 和 Mono 上實(shí)現(xiàn)的 Python 語(yǔ)言,由 Jim Hugunin(同時(shí)也是 Jython 創(chuàng)造者)所創(chuàng)造。

Python是一種跨平臺(tái)的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。 是一個(gè)高層次的結(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語(yǔ)言。

Python是一種解釋型腳本語(yǔ)言,可以應(yīng)用于以下領(lǐng)域:

● 科學(xué)計(jì)算和統(tǒng)計(jì)

● 人工智能

● 桌面界面開(kāi)發(fā)

● 軟件開(kāi)發(fā)

● 后端開(kāi)發(fā)

● 網(wǎng)絡(luò)爬蟲(chóng)

 二、創(chuàng)建 C# 項(xiàng)目

新建一個(gè) Winform 項(xiàng)目 CSharpCallPython

為了更方便的看到控制臺(tái)打印的效果,在 項(xiàng)目屬性 --> 應(yīng)用程序 將輸出類型改為控制臺(tái)輸出

三、C# 調(diào)用 Python

1.IronPython 插件

在 NuGet 中安裝 IronPython 插件

在項(xiàng)目的 Debug 目錄下添加一個(gè) Python 腳本 test.py ,

在 test.py 中添加下面的代碼:

def sayHi():
    print("f**k you")
def add(x,y):
    try:
        return x + y
    except Exception as err:
        return str(err)
def arrSum(arr):
    try:
        sum = 0
        for i in arr:
            sum += i
        return sum
    except Exception as err:
        return str(err)

此時(shí),Python 的工作就完成了,接下來(lái)我們繼續(xù)完成 C# 剩余的邏輯。

winform 界面只需要添加一個(gè)按鈕即可

Form1 代碼:

using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
using System;
using System.Windows.Forms;
namespace CSharpCallPython
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private string PythonScriptPath = string.Empty;
        private ScriptEngine PyEngine = null;
        private void Form1_Load(object sender, EventArgs e)
        {
            PythonScriptPath = Application.StartupPath + "\\test.py";
            PyEngine = Python.CreateEngine();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            dynamic py = PyEngine.ExecuteFile(PythonScriptPath);
            py.sayHi();
            var sum = py.add(3, 5);
            Console.WriteLine("add 方法的和是:{0}", sum);
            int[] arr = new int[3] { 2, 4, 6 };
            var sum1 = py.arrSum(arr);
            Console.WriteLine("數(shù)組的和是:{0}", sum1);
        }
    }
}

運(yùn)行后,點(diǎn)擊按鈕后效果:

2.調(diào)用 Python.exe 程序執(zhí)行

調(diào)用 python.exe 文件執(zhí)行后,由 exe 文件返回執(zhí)行結(jié)果,需要安裝 python,下面的代碼我試了幾次,根本沒(méi)有效果,返回值都是null,可能是個(gè)人配置出了問(wèn)題,這里就展示一下吧。

C# 代碼參考:

Process p = new Process();
//環(huán)境安裝路徑 (已經(jīng)配置了系統(tǒng)變量,所以可以直接寫(xiě)python.exe)
p.StartInfo.FileName = @"python.exe";
//dll+空格+參數(shù)
p.StartInfo.Arguments = @"D:\Develop\TEST\OCR\OCRdemo.py 2 3";//參數(shù)以空格分隔,如果某個(gè)參數(shù)為空,可以傳入””
p.StartInfo.UseShellExecute = false; //必需
p.StartInfo.RedirectStandardOutput = true;//輸出參數(shù)設(shè)定
p.StartInfo.RedirectStandardInput = true;//傳入?yún)?shù)設(shè)定
p.StartInfo.CreateNoWindow = true;
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();//等待外部程序退出后才能往下執(zhí)行}
Console.Write(output);//輸出
p.Close(); 

另外,還有其他的一些調(diào)用的方式,比如使用 c++ 程序調(diào)用 python文件,然后將其做成動(dòng)態(tài)鏈接庫(kù)(dll),在 C# 中調(diào)用此dll文件,這種方式很復(fù)雜,并且受 python 版本、(python/vs)32/64位影響,而且要求用戶必須安裝python運(yùn)行環(huán)境。

總結(jié)

到此這篇關(guān)于C#使用IronPython調(diào)用Python的文章就介紹到這了,更多相關(guān)C#調(diào)用Python內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論