How do I run a Python script from C#?

后端 未结 8 1740
猫巷女王i
猫巷女王i 2020-11-22 02:47

This sort of question has been asked before in varying degrees, but I feel it has not been answered in a concise way and so I ask it again.

I want to run a script in

相关标签:
8条回答
  • 2020-11-22 03:18

    The reason it isn't working is because you have UseShellExecute = false.

    If you don't use the shell, you will have to supply the complete path to the python executable as FileName, and build the Arguments string to supply both your script and the file you want to read.

    Also note, that you can't RedirectStandardOutput unless UseShellExecute = false.

    I'm not quite sure how the argument string should be formatted for python, but you will need something like this:

    private void run_cmd(string cmd, string args)
    {
         ProcessStartInfo start = new ProcessStartInfo();
         start.FileName = "my/full/path/to/python.exe";
         start.Arguments = string.Format("{0} {1}", cmd, args);
         start.UseShellExecute = false;
         start.RedirectStandardOutput = true;
         using(Process process = Process.Start(start))
         {
             using(StreamReader reader = process.StandardOutput)
             {
                 string result = reader.ReadToEnd();
                 Console.Write(result);
             }
         }
    }
    
    0 讨论(0)
  • 2020-11-22 03:20

    Actually its pretty easy to make integration between Csharp (VS) and Python with IronPython. It's not that much complex... As Chris Dunaway already said in answer section I started to build this inegration for my own project. N its pretty simple. Just follow these steps N you will get your results.

    step 1 : Open VS and create new empty ConsoleApp project.

    step 2 : Go to tools --> NuGet Package Manager --> Package Manager Console.

    step 3 : After this open this link in your browser and copy the NuGet Command. Link: https://www.nuget.org/packages/IronPython/2.7.9

    step 4 : After opening the above link copy the PM>Install-Package IronPython -Version 2.7.9 command and paste it in NuGet Console in VS. It will install the supportive packages.

    step 5 : This is my code that I have used to run a .py file stored in my Python.exe directory.

    using IronPython.Hosting;//for DLHE
    using Microsoft.Scripting.Hosting;//provides scripting abilities comparable to batch files
    using System;
    using System.Diagnostics;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    class Hi
    {
    private static void Main(string []args)
    {
    Process process = new Process(); //to make a process call
    ScriptEngine engine = Python.CreateEngine(); //For Engine to initiate the script
    engine.ExecuteFile(@"C:\Users\daulmalik\AppData\Local\Programs\Python\Python37\p1.py");//Path of my .py file that I would like to see running in console after running my .cs file from VS.//process.StandardInput.Flush();
    process.StandardInput.Close();//to close
    process.WaitForExit();//to hold the process i.e. cmd screen as output
    }
    } 
    

    step 6 : save and execute the code

    0 讨论(0)
提交回复
热议问题