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

C# 捕获从C调用的python脚本的返回值#,c#,python,C#,Python,我试图使用C#从下面的python脚本中捕获返回(列表)。流阅读器给我一个空值作为响应。然而,当我打印结果时,我会在流阅读器中获得信息,但当我使用return(list)时,它不会。我尝试了很多方法。链接和任何信息是感激的。 Python: def main1(): data1 =send_initdata("i", sock) list.append (send_data("a", sock,"1")) list.append (send_data("b", soc

我试图使用C#从下面的python脚本中捕获返回(列表)。流阅读器给我一个空值作为响应。然而,当我打印结果时,我会在流阅读器中获得信息,但当我使用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#:


命令行进程的返回总是一个整数,用于指示执行过程中是否存在错误。您不能像在此处尝试的那样返回列表


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

非常感谢您提供的信息!现在在C中,如果我使用scope=engine.ExecuteFile(文件名);如何使用作用域来运行python文件?包含:if name='main':sys.exit(main1())的Python文件感谢您的帮助!对不起,我对Python的工作原理了解不多,只是一般的命令行过程。谢谢Andrew,你知道我如何捕获单个Python函数print命令吗?var ipy=Python.CreateRuntime(选项);动态Python_File=ipy.UseFile(“Function.Py”);Python_File.main1();//如何捕获此输出?我不知道什么是
Python.CreateRuntime
。那是铁蟒吗?API可能只是将python脚本的输出直接发送到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();

            }
        }