c#通过执行cmd执行python

C#通过CMD执行Python

c#通过执行cmd执行python

using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        // 要执行的命令
        // 经过测试python路径中不能有空格,将python.exe、python39.dll、html转ppt.py放到bin下面
        string pythonPath = "python.exe";
        string scriptPath = "html转ppt.py";
        string command = $"{pythonPath} {scriptPath}";

        // 创建 ProcessStartInfo 实例
        ProcessStartInfo processStartInfo = new ProcessStartInfo
        {
            FileName = "cmd.exe",             // CMD 可执行文件
            Arguments = $"/c {command}",     // /c 表示执行命令后关闭 CMD
            RedirectStandardOutput = true,   // 重定向标准输出
            RedirectStandardError = true,    // 重定向标准错误
            UseShellExecute = false,         // 必须设为 false 以重定向输出
            CreateNoWindow = true            // 不显示窗口
        };

        // 创建 Process 实例
        using (Process process = new Process())
        {
            process.StartInfo = processStartInfo;
            process.Start();

            // 读取命令输出
            string output = process.StandardOutput.ReadToEnd();
            string error = process.StandardError.ReadToEnd();
            process.WaitForExit();

            // 显示命令输出和错误信息
            Console.WriteLine("Output:");
            Console.WriteLine(output);
            Console.WriteLine("Error:");
            Console.WriteLine(error);
            Console.ReadLine();
        }
    }
}

C#中运行Python脚本(.py文件)有以下几种实现方法: ### 1. 使用Process类模仿命令行执行 主要思想是启动一个“命令行工具”,向标准输出流中写入标准的命令来执行py文件,不过这种方式可能存在执行慢、CPU占用高的问题。示例代码虽未给出,但原理是通过向`Process`的`StandardInput`写入命令来执行Python脚本。 ```csharp // 大致示例代码框架 using System.Diagnostics; Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.Start(); string command = "python your_script.py"; p.StandardInput.WriteLine(command); ``` ### 2. 直接调用Python执行文件并传入参数 这种方式是对上述方法的改进,直接调用Python执行文件,将py文件以命令行参数形式传入,能避免执行慢和CPU占用高的问题,但具体代码未给出,以下是示例: ```csharp using System.Diagnostics; ProcessStartInfo start = new ProcessStartInfo(); start.FileName = @"C:\Python38\python.exe"; // Python执行文件路径 start.Arguments = "your_script.py"; // Python脚本文件 start.UseShellExecute = false; start.CreateNoWindow = true; start.RedirectStandardOutput = true; start.RedirectStandardError = true; using (Process process = Process.Start(start)) { using (System.IO.StreamReader reader = process.StandardOutput) { string result = reader.ReadToEnd(); Console.WriteLine(result); } } ``` ### 3. 使用IronPython库 通过`IronPython`可以在C#中创建Python解释器对象,读取并执行Python脚本文件,还能调用脚本中的函数。 ```csharp using System; using IronPython.Hosting; using Microsoft.Scripting.Hosting; namespace WindowsFormsAppCallPython { class Program { static void Main() { ScriptEngine pyEngine = Python.CreateEngine();//创建Python解释器对象 dynamic py = pyEngine.ExecuteFile(@"your_script.py");//读取脚本文件 string result = py.main("param1", "param2");//调用脚本文件中对应的函数 Console.WriteLine(result); } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值