首页 > 编程语言 >c# - mono - 调用 python 脚本 .py 文件

c# - mono - 调用 python 脚本 .py 文件

时间:2022-10-28 14:40:05浏览次数:62  
标签:c# mono py System python process using StartInfo


c# - mono - 调用 python 脚本 .py 文件

一、定义
命令行工具:在windows 下是 cmd.exe,在 mac 下使用 bash。

二、踩过的坑
使用 Process 类,启动一个“命令行工具”,在通过向标准输出流中写入标准的命令
(p.StandardInput.WriteLine(command))执行 py 文件。
主要的思想还是模仿命令行的命令执行方式。
导致的问题是,执行巨慢,看已经起了一个 python 的进程,但是就是执行不完,且cpu非常高。
后来换了种方式,完美执行。直接调用 python 可执行文件,py 文件已命令行参数形式传入。

三、调用方法

using System;
using System.Diagnostics;
using System.IO;
using System.Text;

namespace xxx.Service.Utils
{
/// <summary>
/// 进程管理
/// </summary>
public class ProcessUtils
{
/// <summary>
/// 执行外部程序
/// </summary>
/// <param name="workingDir">工作目录</param>
/// <param name="exeFileFullName">可执行文件名</param>
/// <param name="args">命令行参数</param>
/// <param name="maxWaitSeconds">最大等待时间</param>
public void Execute(string workingDir
, string exeFileFullName
, string args
, int maxWaitSeconds = 5000) {

Console.WriteLine("ExecuteSync{0}\t{1}{0}\t{2}{0}\t{3}"
, Environment.NewLine
, workingDir
, exeFileFullName
, args);
try
{
Process process = new Process();
process.StartInfo.FileName = exeFileFullName;
process.StartInfo.Arguments = args;
process.StartInfo.WorkingDirectory = workingDir;

//process.StartInfo.UseShellExecute = true;
//process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

process.Start();

if (maxWaitSeconds > 0)
{
process.WaitForExit(maxWaitSeconds);
process.Close();
}
}
catch (Exception ex)
{
Console.WriteLine("异常:{2}msg={0} {2}err={1}"
, ex.Message
, ex.StackTrace
, Environment.NewLine);
}
Console.WriteLine("执行完成!");
}
}
}

 

标签:c#,mono,py,System,python,process,using,StartInfo
From: https://blog.51cto.com/u_4518216/5804838

相关文章

  • python - 字符串、日期时间转+格式化
    python-字符串、日期时间转+格式化 #!/usr/bin/envpython3#coding=utf-8importosimportsysimportargparseimportcodecsimporttime,datetimedeftest():#"24/......
  • python - 定时拆分备份 nginx 日志
    python-定时拆分备份nginx日志一、背景:nginx的log不会自动按天备份,而且记录时间格式不统一,此程序专门解决这两个问题;二、windows部署方式1.在nginx目录,创建一个n......
  • sqlite3-windows 备份脚本 backup.bat
    sqlite3-windows备份脚本backup.bat 注:其中sqlite3、gzip需要手动下载,放到db目录,下载地址:   sqlite3.exehttps://www.sqlite.org/cli.html   gzip.exeht......
  • python - 分析 iis 日志 wwwlogs
    python-解析iis日志iis日志分析工具比较多,基本都支持windows(不夸平台),统计维度也有限。有找工具的时间还不如自己写一个!!!分析时注意iis日志是格林尼治时间,没有加时区。分......
  • c# - Mvc动态注册HttpModule实例
    c#-Mvc动态注册HttpModule实例再也不容为了兼容iis6、7、8、9、10了  -_-!!!!。不用配置web.config 的   <httpModules> or <modules>节点了!!!Microsoft.W......
  • 直播app开发,Vue动态设置样式和class名
    直播app开发,Vue动态设置样式和class名一、动态设置样式 <template><div:style="{backgroundImage:'url('+bgimg+')',fontSize:'size'}"></div></template><scri......
  • idea - mac idea 无法在 project 导入或添加 module
    idea-macidea无法在project导入或添加module解决方法:本地hosts映射导致,注释掉一下localhost的映射,重试0.0.0.0localhost127.0.0.1localhost255.255.255.255lo......
  • 算法-c#-基于朴素贝叶斯+词频向量空间模型的文本分类实现
    算法-c#-基于朴素贝叶斯+词频向量空间模型的文本分类实现一、朴素贝叶斯分类:公式:P(C|X)=P(X|C)P(C)/P(X)其中:P(C|X):后验概率P(X|C):似然概率(条......
  • python-爬虫-使用 tomd 库,将 html 转换为 markdown 文档
    python-爬虫-使用tomd库,将html转换为markdown文档编码问题搞死人!注意:写python前要先设置两个位置的编码,一个文件顶部设置文件编码,一个是impor......
  • plus.push.getClientInfo()
    https://blog.csdn.net/qq_39410252/article/details/116053737https://blog.csdn.net/u011200562/article/details/118091156......