Спарсить текст из командной строки

qweeeraz

Client
Регистрация
29.05.2018
Сообщения
6
Благодарностей
2
Баллы
3
Привет! такая ситуация: у меня скрипт питона, я его запускаю через C# кубик, для скрипта нужно по очереди ввести три переменные, а потом он выдаёт итоговую строку, мне её надо как-то спарсить. Подскажите, пожалуйста. :(

C#:
Process process = new Process();
process.StartInfo.FileName = @"cmd.exe";
process.StartInfo.RedirectStandardInput = true;
//process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.Arguments = @"";
process.StartInfo.Verb = "runas"; // запуск с правами администратора
process.StartInfo.CreateNoWindow = false;// поменять на true если не хотите видеть окно консоли
process.Start();
process.StandardInput.WriteLine(@"D:");
System.Threading.Thread.Sleep(2 * 1000);
process.StandardInput.WriteLine(@"cd D:\project\main\");
System.Threading.Thread.Sleep(2 * 1000);
process.StandardInput.WriteLine(@"script.py");
System.Threading.Thread.Sleep(2 * 1000);
process.StandardInput.WriteLine(@"тут ввожу первую строку");
System.Threading.Thread.Sleep(2 * 1000);
process.StandardInput.WriteLine(@"тут ввожу вторую строку");
System.Threading.Thread.Sleep(2 * 1000);
process.StandardInput.WriteLine(@"тут ввожу третью строку");
System.Threading.Thread.Sleep(2 * 1000);
process.WaitForExit();
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Что-то типа:
string result = process.StandardOutput.ReadToEnd();
Или записывать питоном результат в txt и считывать Зенкой потом по окончании кубика работы с питоном.
 
  • Спасибо
Реакции: qweeeraz

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 225
Баллы
113
Ну либо прямо в командной строке писать в текстовый файл через "> result.txt".
Там еще что-то в sdt out и sdt err вроде выводится, их можно в переменные класть (в кубике внизу галками, как через шарп надо смотреть). У меня где-то этого было достаточно, нужные данные там были.
 
  • Спасибо
Реакции: qweeeraz

qweeeraz

Client
Регистрация
29.05.2018
Сообщения
6
Благодарностей
2
Баллы
3
Что-то типа:

string result = process.StandardOutput.ReadToEnd();

Или записывать питоном результат в txt и считывать Зенкой потом по окончании кубика работы с питоном.
C#:
Process process = new Process();

process.StartInfo.FileName = @"cmd.exe";

process.StartInfo.RedirectStandardInput = true;

//process.StartInfo.RedirectStandardOutput = true;

process.StartInfo.UseShellExecute = false;

process.StartInfo.Arguments = @"";

process.StartInfo.Verb = "runas"; // запуск с правами администратора

process.StartInfo.CreateNoWindow = false;// поменять на true если не хотите видеть окно консоли

process.Start();

process.StandardInput.WriteLine(@"D:");

System.Threading.Thread.Sleep(2 * 1000);

process.StandardInput.WriteLine(@"cd D:\edu\zennoposter\project\");

System.Threading.Thread.Sleep(2 * 1000);

process.StandardInput.WriteLine(@"main.py");

System.Threading.Thread.Sleep(2 * 1000);

process.StandardInput.WriteLine(@"строка1");

System.Threading.Thread.Sleep(2 * 1000);

process.StandardInput.WriteLine(@"строка2");

System.Threading.Thread.Sleep(2 * 1000);

process.StandardInput.WriteLine(@"строка3");

System.Threading.Thread.Sleep(2 * 1000);



string result = process.StandardOutput.ReadToEnd();

return result;



process.WaitForExit();


Возникает ошибка "

Тип Время Сообщение

10:55:26 Выполнение действия CSharp OwnCode. Поток StandardOut не был перенаправлен или процесс еще не был запущен.

"
 

qweeeraz

Client
Регистрация
29.05.2018
Сообщения
6
Благодарностей
2
Баллы
3
Ну либо прямо в командной строке писать в текстовый файл через "> result.txt".
Там еще что-то в sdt out и sdt err вроде выводится, их можно в переменные класть (в кубике внизу галками, как через шарп надо смотреть). У меня где-то этого было достаточно, нужные данные там были.
C#:
Process process = new Process();

process.StartInfo.FileName = @"cmd.exe";

process.StartInfo.RedirectStandardInput = true;

//process.StartInfo.RedirectStandardOutput = true;

process.StartInfo.UseShellExecute = false;

process.StartInfo.Arguments = @"";

process.StartInfo.Verb = "runas"; // запуск с правами администратора

process.StartInfo.CreateNoWindow = false;// поменять на true если не хотите видеть окно консоли

process.Start();

process.StandardInput.WriteLine(@"D:");

System.Threading.Thread.Sleep(2 * 1000);

process.StandardInput.WriteLine(@"cd D:\edu\zennoposter\project\");

System.Threading.Thread.Sleep(2 * 1000);

process.StandardInput.WriteLine(@"main.py > results.txt");

System.Threading.Thread.Sleep(2 * 1000);

process.StandardInput.WriteLine(@"строка1");

System.Threading.Thread.Sleep(2 * 1000);

process.StandardInput.WriteLine(@"строка2");

System.Threading.Thread.Sleep(2 * 1000);

process.StandardInput.WriteLine(@"строка3");

System.Threading.Thread.Sleep(2 * 1000);



//string result = process.StandardOutput.ReadToEnd();

//return result;



process.WaitForExit();
В итоге в файле results.txt получаю:
строка1
строка2
строка3

То есть в файл записываются, только входящие сообщения от скрипта, а результата нет =(
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)