c#运行python_从C#运行Python程序的两种方法

洪俊拔
2023-12-01

c#运行python

前段时间,我们创建了一个有关如何使用的示例

来自C的Python ,作为一个独立的过程以及您如何

可以将其嵌入并作为C程序的一部分运行。 然后我们意识到; 也许人们不再编写C程序了,

因此我们用Java制作了相同的示例 。 在查看bytes.com论坛之后,我们开始怀疑也许人们使用C#而不是Java和C。

因此,在这里我们关闭循环并展示一个C#版本!

安装

我们使用装有python 2.7的Windows 7计算机。 由于我们要从命令行调用Python,

添加此Python安装的路径。

通常,Python安装位于:

C:\ Python27

然后,要从命令行访问Python,我们进入控制面板,系统,高级系统设置,然后单击。 在底部

这将有一个“环境变量”按钮。 单击它,然后找到一个名为“ Path”的变量。 如果它

没有在那里,并添加

C:\ Python27 。 如果存在“路径”,则可以将C:\ Python27放在第一位,但要确保它以“;”结尾

在我们的Windows 7中,安装了Visual Studio 10 Express。 如果没有这种工具,

下载并安装。 过程方法

我们的想法如下: 我们在其中将Python程序定义为字符串。 该程序将做两件事; 从命令行获取两个数字,然后将这些数字加在一起并打印到屏幕上。

下面的程序将首先将python程序保存到磁盘(从C#中),然后从C#中执行Python,作为一个过程,在该过程中,我们刚刚保存为文件的程序将被执行。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics; // Process
using System.IO; // StreamWriter
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // the python program as a string. Note '@' which allow us to have a multiline string
            String prg = @"import sys
x = int(sys.argv[1])
y = int(sys.argv[2])
print x+y";
            StreamWriter sw = new StreamWriter("c:\\kudos\\test2.py");
            sw.Write(prg); // write this program to a file
            sw.Close(); 
            int a = 2;
            int b = 2; 
            Process p = new Process(); // create process (i.e., the python program
            p.StartInfo.FileName = "python.exe";
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.UseShellExecute = false; // make sure we can read the output from stdout
            p.StartInfo.Arguments = "c:\\kudos\\test2.py "+a+" "+b; // start the python program with two parameters
            p.Start(); // start the process (the python program)
            StreamReader s = p.StandardOutput; 
            String output = s.ReadToEnd();
            string []r = output.Split(new char[]{' '}); // get the parameter
            Console.WriteLine(r[0]);
            p.WaitForExit(); 
            Console.ReadLine(); // wait for a key press
        }
    }
} 
IronPython方法

有一个很酷的项目叫做

IronPython 。 就像我们在上一篇文章中讨论的Jython一样,这是.net一部分的Python版本。

从这里下载:

http://ironpython.net/

安装它,并记住它的安装目录(在我的计算机上是:

C:\ Program Files \ IronPython 2.7 )。

在Visual Studio中启动一个新的控制台应用程序,右键单击右侧的项目,然后选择“添加引用...”。

将所有.dll文件添加到IronPython目录中。

现在,您准备在C#中创建字符串,即Python程序,在IronPython中执行它们,基本上不需要外部程序,临时文件和进程。 相比

JavaC示例 ,这很简单。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IronPython.Hosting; // make us use Python 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        { 
            int a = 1;
            int b = 2; 
            Microsoft.Scripting.Hosting.ScriptEngine py = Python.CreateEngine(); // allow us to run ironpython programs
            Microsoft.Scripting.Hosting.ScriptScope s = py.CreateScope(); // you need this to get the variables
            py.Execute("x = "+a+"+"+b,s); // this is your python program
            Console.WriteLine(s.GetVariable("x")); // get the variable from the python program
            Console.ReadLine(); // wait for the user to press a button
        }
    }
} 
在执行时间方面,IronPython似乎比使用处理方法要慢一些。 但是话又说回来,如果我们正在看IronPython网页,对IronPython的最新更新似乎是一年多以前了!

翻译自: https://bytes.com/topic/python/insights/950783-two-ways-run-python-programs-c

c#运行python

 类似资料: