0 / 0 / 0
Регистрация: 14.04.2018
Сообщений: 5
1

При вызове Process.Star­t() возникает ошибка "failed to execute script Parser"

11.07.2019, 09:42. Показов 1231. Ответов 8

При вызове myProcess.Start() возникает ошибка "failed to execute script Parser". Дальше программа пытается работать как обычно, исключения не вылетают, блок catch не отрабатывает. Исключение вызывается дальше, когда нужно использовать "плоды" работы скрипта, а их не существует. Все пути проверил, они правильные. Вызываемый мной скрипт (Parser.exe), написанный на питоне и скомпилированный в exe-файл работает правильно, если запускать его вручную. Больше идей, что может быть не так у меня нет.
Надеюсь на вашу помощь.

Вот код метода, где возникает ошибка:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        public static string StartParser()
        {            
            string parser_path = GetPath("Parser.exe");
 
            try
            {
                using (Process myProcess = new Process())
                {  
                        myProcess.StartInfo.UseShellExecute = false;
                        myProcess.StartInfo.FileName = parser_path;
                        myProcess.StartInfo.CreateNoWindow = true;
                        myProcess.Start();                        
                        myProcess.WaitForExit();
                }
 
                return "0";
                
            }
            catch (Exception e)
            {
                return "Parser error\n" + e.Message;
            }
        }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.07.2019, 09:42
Ответы с готовыми решениями:

Как проследить событие закрытие созданного мной System.Diagnostics.Process.Start("explorer", путь)?
Как проследить событие закрытие созданного мной System.Diagnostics.Process.Start("explorer", путь)?

Что делать, пишет то что приложения не найдено Process.Start(@"clik1.amk"); ?
что делать пишет то что приложения не найдено Process.Start(@"clik1.amk"); Добавлено через 45...

При подключении второго клиента к серверу возникает ошибка "IAsyncResult не был получен"
Всем привет, у меня проблема с асинхронными сокетами. Суть: Пишу простенький чат, написал сервер и...

При добавлении WindowsMediaPlayer на форму возникает ошибка "Не удалось создать компонент AxHost."
Добрый день При добавлении медиа плеера на форму , возникает ошибка. Изначально плеер работал и...

8
2457 / 1463 / 779
Регистрация: 14.04.2015
Сообщений: 5,153
11.07.2019, 10:37 2
BestProger, где проверил?
Цитата Сообщение от BestProger Посмотреть сообщение
Все пути проверил, они правильные.
что находится в GetPath?
0
0 / 0 / 0
Регистрация: 14.04.2018
Сообщений: 5
11.07.2019, 11:01  [ТС] 3
AndreyVorobey, проверял и вручную, смотря в отладчике на то, что возвращает GetPath, и дальше в коде, когда программа не может найти файл, который должен быть создан скриптом, она вызывает исключение, в котором видно путь к ненайденному файлу.

Код GetPath:
C#
1
2
3
4
5
6
7
private static string GetPath(string filename)
        {
            // определение текущей директории
            string currentDirectory = Environment.CurrentDirectory;
 
            return currentDirectory + "\\MandarinNews\\" + filename;
        }
0
795 / 578 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
11.07.2019, 12:57 4
BestProger,
..так похоже, что Process.Start() файл находит, а уже потом среда выполнения питона выдает сообщение .. может, его с какими-то параметрами запускать надо? .. или через CMD или еще как ...
0
0 / 0 / 0
Регистрация: 14.04.2018
Сообщений: 5
11.07.2019, 13:06  [ТС] 5
carrotik, а почему тогда при ручном запуске exe-файла все прекрасно работает? Меня вот этот момент больше всего и смущает
0
795 / 578 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
11.07.2019, 13:09 6
Цитата Сообщение от BestProger Посмотреть сообщение
carrotik, а почему тогда при ручном запуске exe-файла все прекрасно работает? Меня вот этот момент больше всего и смущает
..просто если в сообщении есть слово "script", то откуда винда может знать, что это скрипт, а не ноутпад.exe, к примеру? .. значит, при попытке запуска таким образом чего-то не хватает/не настроено ... но это просто рассуждения с моей стороны ..
0
0 / 0 / 0
Регистрация: 14.04.2018
Сообщений: 5
11.07.2019, 13:13  [ТС] 7
carrotik, спасибо за наводку, попробую найти что-нибудь в скрипте
0
2457 / 1463 / 779
Регистрация: 14.04.2015
Сообщений: 5,153
12.07.2019, 14:41 8
BestProger, пример с файлом, который лежит в директории MandarinNews проекта
C#
1
2
3
4
private static string GetPath(string filename)
        {
            return Path.GetFullPath("MandarinNews\\" + filename);
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
      static void Main(string[] args)
      {
            string filename = @"test.txt";
 
            string FileStart = GetPath(filename);
 
            Process process = new Process();
            process.StartInfo.FileName = FileStart;
            process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
            process.Start();
            process.WaitForExit();
      }
0
0 / 0 / 0
Регистрация: 14.04.2018
Сообщений: 5
12.07.2019, 19:06  [ТС] 9
AndreyVorobey, спасибо! Ваш совет помог мне выловить ошибку. Она, как верно сказал carrotik, была в скрипте
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2019, 19:06
Помогаю со студенческими работами здесь

При вызове метода из другого файла ошибка "The type initializer for 'Openxls' threw an exception"
Хелп плиз! Прога работала и вдруг перестала при вызове метода из другого файла пишет The type...

Синхронизация файлов в двух папках. При работе с большими файлами возникает ошибка "Файл занят другим процессом"
Доброго времени суток. У меня такой вопрос. Пишу программу для синхронизации данных в двух...

Цель - при нажатии на кнопку создать еще одну кнопку. Ошибка "Button" не содержит определения для "Location" и "Text""
int Control ; private void Button2_Click(object sender, RoutedEventArgs e) {...

При считывании текстового файла выдает ошибку "file is being used by another process"
private static bool ChekStatus(string login) { bool status = false; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru