【问题标题】:Python script output redirection using C#使用 C# 的 Python 脚本输出重定向
【发布时间】:2012-12-02 17:23:56
【问题描述】:

这个问题似乎是重复的,我已经尝试了所有建议的解决方案,但徒劳无功,我想使用此代码重定向 python 脚本输出:

    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo.FileName = "python.exe";
    proc.StartInfo.Arguments = Application.StartupPath.Replace("\\bin\\Debug", "") + "\\scripts\\test.py";
    proc.OutputDataReceived += OutputDataReceived;
    proc.ErrorDataReceived += ErrorDataReceived;

    proc.StartInfo.RedirectStandardOutput = true;
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.CreateNoWindow = true;
    proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 

    proc.Start();
    //proc.WaitForExit();

    StringBuilder q = new StringBuilder();
    while (!proc.HasExited)
    {
        q.Append(proc.StandardOutput.ReadToEnd());
    }
    string r = q.ToString();
    r = proc.StandardOutput.ReadToEnd();
    MessageBox.Show(r);
}
private void OutputDataReceived(object sender, DataReceivedEventArgs args)
{
    //textOutput.Text += args.Data;
    MessageBox.Show(args.Data);
}

python 脚本包含 print "hello test" 我尝试取消缓冲输出但徒劳无功。

请帮忙。

我正在使用 VS 2010 .NET 4.0、Python 2.7、winXP sp3。

【问题讨论】:

    标签: c# python .net windows outputstream


    【解决方案1】:

    尝试创建 StreamReader 实例而不是 StringBuilder。 这段代码对我来说很好用:

     System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.StartInfo.FileName = "ping.exe";
            proc.StartInfo.Arguments = "8.8.8.8";
    
    
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    
            proc.Start();
           StreamReader q = proc.StandardOutput;
           while (!proc.HasExited)
             Console.WriteLine(q.ReadLine());
    
            Console.ReadKey();
    

    【讨论】:

    • 如果这不起作用,您可以随时使用管道运算符写入文件并读取该文件
    • 它没有用,但我需要实时重定向输出
    • 我添加了代码,它对我有用,它会逐行打印(也许不是最好的方法,我从未学过 C#)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2018-06-12
    • 2017-08-31
    • 2018-04-23
    相关资源
    最近更新 更多