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

本文关键字:python 返回值 脚本 调用 | 更新日期: 2023-09-27 18:09:22

我试图使用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#:

    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();
            }
        }

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

命令行进程的返回值总是一个整数,用于指示执行过程中是否存在错误。你不能像这里那样返回一个列表。

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