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中执行它们,基本上不需要外部程序,临时文件和进程。 相比
Java和C示例 ,这很简单。
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