• <C#> C#调用Python脚本方法


    C#调用Python脚本方法

    class Program
     {
            /// 
            /// 实时获取python输出
            /// 
            /// 
            /// 
            static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
            {
                if (!string.IsNullOrEmpty(e.Data))
                {
                    Console.WriteLine(e.Data);
                }
            }
    
            static void Main(string[] args)
            {
                Process p = new Process();
    
                string path = @" .\train.py ";// 获得python文件的绝对路径(将文件放在c#的debug文件夹中可以这样操作)
                p.StartInfo.FileName = @"python.exe";//没有配环境变量的话,写python.exe的绝对路径。如果配了,直接写"python.exe"即可
                string sArguments = path;
                //foreach (string sigstr in teps)
                //{
                //    sArguments += " " + sigstr;//传递参数
                //}
    
                //sArguments += " ";
    
                p.StartInfo.Arguments = sArguments;
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.CreateNoWindow = true;
                p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
                p.ErrorDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
    
                try
                {
                    p.Start(); //启动程序
                    p.BeginOutputReadLine();
                    p.BeginErrorReadLine();
                    p.WaitForExit(); //等待程序执行完退出进程
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message + e.StackTrace);
                }
    
    			//关闭进程
                p.Kill();
                p.Close();
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    Python端

    1、Python报ImportError: No module named 'xxx’错误
    解决方案:

    import sys  
    sys.path.append(’需要引用模块的地址')
    
    # sys.path.append("..")   # 这代表添加当前路径的上一级目录
    
    • 1
    • 2
    • 3
    • 4

    2、Python没有进行实时输出结果
    原因:一般会先将字符送到缓冲区,然后再打印。但由于缓冲区没满,不会打印。就需要采取一些手段。如每次打印后强行刷新缓冲区。
    解决方案:在Print函数后面增加sys.stdout.flush()

  • 相关阅读:
    【框架源码篇 03】Spring源码手写篇-手写AOP
    【k8s】kubectl命令详解
    Bee Mobile组件库重磅升级
    MySQL数据库索引和事务详解
    Jmeter连接数据库jdbc
    ​中秋团圆季《乡村振兴战略下传统村落文化旅游设计》许少辉八月新书
    k8s client-go源码分析 informer源码分析(3)-Reflector源码分析
    VSCode设置快捷键
    Java原型模式源码剖析及使用场景
    IPC中的AIDL机制
  • 原文地址:https://blog.csdn.net/thisiszdy/article/details/134325965