捕获从C#调用的python脚本的返回值

时间:2014-06-19 23:23:34

标签: c# python

我试图使用C#从下面的python脚本中捕获return(list)。流阅读器给我一个null作为响应。但是,当我打印结果时,我在流阅读器中获取信息,但是当我使用return(list)时它没有。我已经尝试了很多方法。链接和任何信息表示赞赏。 Python:

def main1():

    data1 =send_initdata("i", sock)

    list.append (send_data("a", sock,"1"))
    list.append (send_data("b", sock,"2"))

    #print (list)
    return (list)


if __name__ == '__main__':sys.exit(main1())  

C#:

    void run_cmd()
    {


        ProcessStartInfo start = new ProcessStartInfo();
        start.FileName = @"C:\Python27\python.exe";
        start.Arguments = string.Format("{0} {1}", "Function.Py", "");
        start.UseShellExecute = false;
        start.RedirectStandardOutput = true;
        start.CreateNoWindow = true;


        using (Process process = Process.Start(start))
        {
            using (StreamReader reader = process.StandardOutput)
            {
                var result = reader.ReadLine();

            }
        }

1 个答案:

答案 0 :(得分:1)

命令行进程的返回始终为整数,用于指示执行期间是否存在错误。你不能在这里尝试回复列表。

让脚本将列表内容打印到STDOUT(如您的注释print语句所做的那样),然后读取它作为您的C#代码所做的是正确的方法。或者,脚本可以将列表写入文件,然后您的C#代码读取该文件。