如何将值从C#表单传递到Python

时间:2015-03-10 11:22:11

标签: c# python

我在后台使用Visual C#作为UI和Python。

  1. 在可视化C#表单中输入详细信息。
  2. 单击按钮应运行Python程序,该程序应将表单中给出的详细信息嵌入到XML文件中。
  3. Python应该处理XML并将其提取到系统中。
  4. Python应该从日志中监视成功并返回要以C#形式显示的值。
  5. 这可能吗?

1 个答案:

答案 0 :(得分:2)

您可以在后台的新进程中启动python,并将表单项作为参数传递给进程启动信息,就像从命令行运行python脚本一样,如下所示:

var start = new ProcessStartInfo
            {
                FileName = _pathToPythonExecutable,
                Arguments = string.Format(" {0} --arg1 {1}",_pathToYourPythonScript, //formItemValue),
                UseShellExecute = false,
                RedirectStandardOutput = true,
                RedirectStandardInput = true,
                RedirectStandardError = true,
                WorkingDirectory = _currentWorkingDirectory            
            };
using (Process process = Process.Start(start))
            { 
                // Do stuff
            }

您已经在我的开始信息中看到,我告诉过程重定向标准输入,标准输出和标准错误。这是您可以在进程之间传递数据的另一种方法。

你会像这样写标准输入:

process.StandardInput.Write(input);
process.StandardInput.Close();

标准输出和标准错误是流,因此您可以像这样读取它们

// This would be the same for standard error
using (StreamReader reader = process.StandardOutput)
                {
                    result = reader.ReadToEnd();
                }