Программная логика
Попытка запустить скрипт Python, используя Process.Start () с agrument. Я пытаюсь автоматизировать сценарий с помощью графического интерфейса, где для каждого списка аргументов генерируется и запускается новая команда python.
Задача
Процесс python не запускается. Окно CMD отображается очень короткое время и закрывается. В основном скрипт Python не запускается.
Примечание : скрипт Python работает правильно при запуске вручную через cmd. Также второй проверенный код (ниже) выполняется, когда нет никаких аргументов, т. Е. Когда без аргументов вызывается только скрипт python.
Итак, где-то возникает ошибка, когда я пытаюсь передать аргументы и вызвать скрипт.
Пробные решения
Код: 1-я попытка
For Each common_dir In common_dirs
' command for starting python script
Dim command As String = utils.pyModDir & "Sys_File_Lister.py" & " " & "-d" & " " & "'" & common_dir & "'"
Try
'MsgBox(utils.python_Path)
Process.Start(utils.python_Path, command).WaitForExit()
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
Next
Код: 2nd Try
Using proc As New Process()
' set the filename for process
proc.StartInfo.FileName = utils.python_Path
' set the arguments for process
proc.StartInfo.Arguments = """" & command & """"
MsgBox(proc.StartInfo.Arguments.ToString)
Try
' start the process
proc.Start()
' wait for the process to complete
proc.WaitForExit()
' if error
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Using
Код: 3-я попытка
На этот раз, вместо того, чтобы вызывать скрипт python с использованием Python напрямую, я вызвал cmd.exe в StartInfo.FileName и вызвал все остальное в StartInfo.Arguments как предложено.
На этот раз сообщение об ошибке «Файл не найден».
Это сформированная строка, переданная в аргументах для CMD:
Из приведенной выше команды также попытался удалить кавычки из пути Python и сохранить его для пути сценария, но та же ошибка.
Using proc As New Process()
' set the filename for process
proc.StartInfo.FileName = "cmd.exe /K "
' set the arguments for process
proc.StartInfo.Arguments = """" & command & """"
MsgBox(proc.StartInfo.Arguments.ToString)
Try
' start the process
proc.Start()
' wait for the process to complete
proc.WaitForExit()
' if error
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Using
Справка : Требуется любая помощь!