• C#通过Process调用Python脚本


     visual studio 2022

    python 3.10.11

    1. using Microsoft.Scripting.Hosting;
    2. using IronPython.Hosting;
    3. using System.Windows.Forms.Design;
    4. namespace JHCamera3D.Helper.Python
    5. {
    6. public class RunPythonHelper
    7. {
    8. public static string ExecPython()
    9. {
    10. string FileName = System.AppDomain.CurrentDomain.BaseDirectory + "PythonScript/pythonTest.py";
    11. string pm = "pm";
    12. // 创建进程对象并设置要运行的命令及参数
    13. var process = new Process();
    14. process.StartInfo.WorkingDirectory = System.AppDomain.CurrentDomain.BaseDirectory;
    15. process.StartInfo.FileName = "python.exe"; // python 安装路径或者添加到系统 PATH 变量后直接写"python"
    16. process.StartInfo.Arguments = $"-u {FileName} {pm}"; // 指定要运行的 Python 脚本文件名(包括完整路径)
    17. // 隐藏控制台窗口
    18. process.StartInfo.CreateNoWindow = true;
    19. process.StartInfo.UseShellExecute = false;
    20. // 重定向输入、输出和错误流
    21. process.StartInfo.RedirectStandardInput = true;
    22. process.StartInfo.RedirectStandardOutput = true;
    23. process.StartInfo.RedirectStandardError = true;
    24. // 开始进程
    25. process.Start();
    26. // 等待进程结束
    27. process.WaitForExit();
    28. // 获取标准输出结果
    29. string output = process.StandardOutput.ReadToEnd();
    30. Console.WriteLine(output);
    31. return output;
    32. }
    33. }
    34. }

     Python脚本pythonTest.py

    1. #import open3d as o3d
    2. #import numpy as np
    3. #import matplotlib.pyplot as plt
    4. import copy
    5. import os
    6. import sys
    7. #import open3d.core as o3c
    8. #print(o3c)
    9. def Test(msg):
    10. #logger.debug(msg)
    11. #return ''
    12. #print('')
    13. return f"Hello {msg}"
    14. aa=Test("easyboot ")
    15. print(aa)
    16. if __name__ == "__main__":
    17. # print('param:', str(sys.argv))
    18. #print(EchoHi(sys.argv[1]))
    19. aa = Test(sys.argv[1])
    20. print(aa+'main')

    Webapi中调用 

    1. [SwaggerControllerOrder(2)]
    2. [ApiController]
    3. [Route("[controller]/[action]")]
    4. public class PythonController : ControllerBase
    5. {
    6. /// <summary>
    7. /// 设置是否保存GS文件 返回结果 true 保存,false 不保存
    8. /// </summary>
    9. /// <returns></returns>
    10. [HttpPost(Name = "RunPythonTest")]
    11. public string RunPythonTest()
    12. {
    13. string msg = RunPythonHelper.ExecPython();
    14. return msg;
    15. }
    16. }

    测试返回结果 

  • 相关阅读:
    Scala基础
    神经网络--感知机
    【每日一题】只出现一次的数字 II
    从输入URL到展示出页面这个过程发生了什么
    Azure + React + ASP.NET Core 项目笔记一:项目环境搭建(一)
    【CANoe】文件处理_hex文件读取解析
    浅谈java开启异步线程的几种方法(@Async,AsyncManager,线程池)
    使用elementUI的form表单和Steps步骤条如何让rules分步骤校验
    蔚来杯2022牛客暑期多校训练营4
    临界平面法简介
  • 原文地址:https://blog.csdn.net/easyboot/article/details/136318131