У меня есть оболочка C # GUI, которая использует Process.Start () для вызова различных сторонних сценариев Python (эти сценарии нельзя изменить).Соответствующий код:
Process process = new Process();
process.StartInfo.FileName = FileParserConstants.PYTHON_PATH; // Path to python exe
process.StartInfo.Arguments = FileParserConstants.SCRIPT_PATH + sInput; // Path to scripts with input script + arguments
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
process.WaitForExit();
return process.StandardOutput.ReadToEnd().Trim();
Это кажется относительно простым и работает, когда мой тип проекта C # установлен на «Приложение Windows».Однако после переключения на «Консольное приложение», хотя ошибки нет, скрипты python не функционируют должным образом.
А именно, есть скрипт python, который принимает аргументы и вызывает exe для изменения заданных настроек.аргументы.Когда скрипт python вызывается из проекта, настроенного как консольное приложение, в исполняемом файле, вызываемом из питона, возникает «OSError: [WinError 6] дескриптор недопустимый» (эта ошибка обрабатывается в скриптах питона и регистрируется).Опять же, когда скрипт вызывается из проекта, настроенного как приложение Windows, он работает правильно.
По причинам, не связанным с проблемой, я вынужден сделать этот проект консольным приложением, и у меня возникают проблемы с поискомдокументация о различиях между этими двумя типами проектов и причинах, по которым Процесс ведет себя по-разному.