Python&;C#:IronPython是绝对必要的吗?
我基本上是一名C#程序员,但留下的项目让我有两个选择:Python&;C#:IronPython是绝对必要的吗?,c#,python,C#,Python,我基本上是一名C#程序员,但留下的项目让我有两个选择: 调用python脚本(另存为.py文件)并处理返回值,或 用C#重写整个python脚本(总共涉及6.py文件) 当然,如果我可以简单地实现选项1,那么选项2是一个很大的时间浪费。此外,选项1是一个学习机会,而选项2是一个完全的极客合作 因此,我的问题是:有没有一种方法可以构建一个C#进程对象来触发.py文件的脚本并捕获脚本的返回值而不使用IronPython?我不反对使用IronPython,我只需要尽快找到一个解决方案,所以如果我能避开
谢谢。使用System.Diagnostics.Process运行Python脚本,然后在脚本完成后使用Process.ExitCode检索脚本的返回值:
// Start the script
var process = System.Diagnostics.Process.Start("python MyScript.py");
// Wait for the script to run
process.WaitForExit();
int returnVal = process.ExitCode;
用于运行Python脚本。在ProcessStartInfo
对象中,指定:
=Python脚本的路径和文件名FileName
=要传递给脚本的任何参数参数
=true(如果需要,RedirectStandardOutput
)RedirectStandardError
=falseUseShellExecute
进程
对象,您可以在该对象上执行一些操作,特别是:
- 使用
读取Python脚本的输出。例如,您可以对此调用Process.StandardOutput
,以获取包含整个输出的单个字符串,或者在循环中调用ReadToEnd()
ReadLine()
- 使用
读取脚本的返回代码Process.ExitCode
- 使用
等待脚本完成Process.WaitForExit
Process py = new Process();
py.StartInfo.FileName = "python.exe";
py.StartInfo.Arguments = "c:\\python\\script.py";
py.StartInfo.UseShellExecute = false;
py.StartInfo.CreateNoWindow = true;
py.StartInfo.RedirectStandardOutput = true;
py.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
py.Start();
py.BeginOutputReadLine();
py.WaitForExit();
py.Close();
但是,我必须说,你可以有多个系统,基于不同的语言,因为他们可以理解每一个说什么。我的意思是,有一些标准可以被认为是整个事情的粘合剂。例如,python系统可以在python内置的Web服务中为C#系统提供JSON、XML或其他标准。有时最好回顾一下您的体系结构。选项3。用python重写整个C#应用程序:)