c# - mono - 調用 python 腳本 .py 文件

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("執行完成!");
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章