C#程序执行Python脚本

摘要:
因此,这种方法需要在计算机上安装Python并具有Python程序。exe。现在,有以下py脚本:addpyimportsysdefAdd(a,b):returna+bif__name__=='__main__':X=intY=intt=Add(X,Y)print然后,使用以下界面设计一个C#窗口程序:后端C#代码如下:privatevoidbutton1_单击{try{stringpath=@“G:MyCodeListCSharpPython CSharpPythonDebugAdd.py”;//*.py文件路径,不带空格或中文if(!File.Exists)回报//两个输入参数inta=转换。ToInt32;intb=转换。ToInt32//进程启动信息ProcessStartInfostart=newProcessStartInfo();开始FileName=@“E:ProgramFilesMicrosoftMicrosoft.VisualStudio.SharedPython 37_64python.exe”;//蟒蛇exe,程序。您可以将环境变量配置为仅使用程序名start。Arguments=$“{path}{a}{b}”//对于启动程序时的输入参数,请在参数和py代码文件的路径之间使用空格,不使用“Chinese and space”。

方法介绍:

     通过调用“Python.exe”程序,执行脚本文件。所以,本方式要求电脑上已经安装了Python,拥有程序Python.exe程序。

现在,有如下py脚本:Add.py

import sys

def Add(a,b):
    return a+b

if __name__=='__main__':
    X = int(sys.argv[1])
    Y = int(sys.argv[2])
    ret = Add(X,Y)
    print(ret)

然后,设计C#窗口程序,界面如下:

C#程序执行Python脚本第1张

后端C#代码如下(只截取关键代码):

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string path = @"G:MyCodeListCSharpPythonCSharpPythoninDebugAdd.py"; // *.py文件路径,不要有空格或中文
                if (!File.Exists(path)) return;

                // 两个输入参数
                int a = Convert.ToInt32(this.numericUpDown1.Text);
                int b = Convert.ToInt32(this.numericUpDown2.Text);

                // 进程启动信息
                ProcessStartInfo start = new ProcessStartInfo();
                start.FileName = @"E:Program Files (x86)Microsoft Visual StudioSharedPython37_64python.exe"; // Python.exe,程序。可以配置环境变量,从而只使用程序名称
                start.Arguments = $"{path} {a} {b}";  // 启动程序时的输入参数,参数间使用一个空格,py代码文件路径,不要有“中文和空格”。
                start.UseShellExecute = false;
                start.RedirectStandardOutput = true;
                start.RedirectStandardInput = true;
                start.RedirectStandardError = true;
                start.CreateNoWindow = true; // 不显示界面

                // 启动进程
                var pp = new Process();
                pp.StartInfo = start;
                pp.Start();

                // 执行后输出结果
                using (var progressTest = Process.Start(start))
                {
                    progressTest.ErrorDataReceived += Pp_ErrorDataReceived;
                    // 异步获取命令行内容
                    progressTest.BeginOutputReadLine();
                    // 为异步获取订阅事件
                    progressTest.OutputDataReceived += new DataReceivedEventHandler(outputDataReceived);
                }

            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.Message);
            }
        }

        public void outputDataReceived(object sender, DataReceivedEventArgs e)
        {
            if (!string.IsNullOrEmpty(e.Data))
            {
                this.Invoke(new Action(() =>
                {
                    this.label5.Text = e.Data; // SUM结果
                }));
            }
        }

        private void Pp_ErrorDataReceived(object sender, DataReceivedEventArgs e)
        {
            var ed = e.Data;
        }

以上,即可;运行如下图:

C#程序执行Python脚本第2张 C#程序执行Python脚本第3张

免责声明:文章转载自《C#程序执行Python脚本》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP站内搜索:多关键字、加亮显示微信小程序连接无法跳转/ can not navigate to tabBar page错误下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python Web 开发的十个框架【转载】

Python 是一门动态、面向对象语言。其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性。除了语言本身的设计目的之外,Python标准 库也是值得大家称赞的,Python甚至还自带服务器。 其它方面,Python拥有足够多的免费数据函数库、免费的Web网页模板系统、还有与Web服务 器进行交互的库、这些都可以设计到你的Web应用程序...

linux下将Python环境默认更改为Python3.6

1、删除原来指向python2的软链接 1 rm -rf /usr/bin/python 2、创建新的软链接 1 ln -s /usr/bin/python3.6 /usr/bin/python 3、查看是否更改成功 python -V //若显示版本信息为python3.6,则更改成功...

安装的 Python 版本太多互相干扰?pyenv 建议了解一下。

写在之前 我们都知道现在的 Python 有 Python2 和 Python3,但是由于各种乱七八糟的原因导致这俩哥们要长期共存,荣辱与共,尴尬的是这哥俩的差异还比较大,在很多时候我们可能要同时用到它们,所以就要在 Python2 和 Python3 之间来回的无缝切换。 安装不同版本的 Python 我已经够累了,还要在不同版本的 Python 之间切...

python下安装 setuptools 和pip(python环境刚部署好)

起因:换了一台电脑,部署python环境,练习爬虫。然而,还没开始敲代码,就先安装各种第三方包,就想到了pip 安装利器。 官网下载好了pip压缩包,解压后在pip目录下执行命令:python setup.py install,报错提示:缺少setuptools 文件t。接着就开始搞setuptools,一番折腾,终于搞定。 特意将操作的过程记录下来。 1...

python库fire使用简介

简介 目前python命令行解析库用过的有:argparse(python自带)、click(Flask作者写的) 但二者相比fire这个库,用起来都不够 “简单”,fire一行代码能把函数导出到命令行窗口。 argparse用法示例 #arg_test.py importargparse def counter(file_type=None):...

Linux下安装numpy

转自:https://blog.csdn.net/abc_321a/article/details/82056019 1.下载源码包 ,命令如下wget http://jaist.dl.sourceforge.net/project/numpy/NumPy/1.9.0/numpy-1.9.0.zip若提示没有wget,则需要通过“yum install -...