Выполнить код Python из C # с классом процесса - PullRequest
0 голосов
/ 05 июня 2018
ProcessStartInfo start = new ProcessStartInfo();
        start.FileName = ;
        start.Arguments = ;  
        start.UseShellExecute = false;
        start.RedirectStandardOutput = true;
        using (Process process = Process.Start(start))
        {
            using (StreamReader reader = process.StandardOutput)
            {
                string result = reader.ReadToEnd();
                Console.Write(result);
            }
        }

У меня есть этот код Python для запуска Python из C #.Но я не знаю, что положить в эти две переменные.

РЕДАКТИРОВАТЬ

ProcessStartInfo start = new ProcessStartInfo();
        start.FileName = @"U:\Documents\entsoe-py-master\tests\test_data\python.exe";
        start.Arguments = @"U:\Documents\entsoe-py-master\tests\test_data\request.py 31.12.2016 01.01.2017 datatype";  // give filename, dates from the UI to python and query datatype
        start.UseShellExecute = false;
        start.RedirectStandardOutput = true;    
        using (Process process = Process.Start(start))
        {
            using (StreamReader reader = process.StandardOutput)
            {
                string result = reader.ReadToEnd();
                Console.Write(result);
            }
        }

Я получаю эту ошибку:

System.ComponentModel.Win32Exception: 'The system cannot find the file specified'

В этой строке using (Process process = Process.Start(start))

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Чтобы запустить код Python в c #, вам нужно передать полный путь к python.exe в файл filename и .py в качестве аргумента

ProcessStartInfo start = new ProcessStartInfo();
start.FileName ="Path of python.exe" ;
start.Arguments = "file name ends with .py extension";
start.Verb = "runas";  //To run your process in elevated mode
...remaining code 
0 голосов
/ 05 июня 2018

Если вы не используете оболочку, вам нужно будет указать полный путь к исполняемому файлу python в виде FileName и построить строку Arguments, чтобы предоставить и ваш скрипт, и файл, который вы хотите прочитать.

 ProcessStartInfo start = new ProcessStartInfo();
 start.FileName = cmd;//cmd is full path to python.exe
 start.Arguments = args;//args is path to .py file and any cmd line 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);
     }
 }

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...