尝试使用Process.Start()和agrument运行python脚本。我正在尝试使用GUI自动化脚本,其中对于每个参数列表,都会生成并运行一个新的python命令。
python进程无法启动。 CMD窗口显示时间很短并关闭。基本上python脚本不会运行。
注意:通过cmd手动运行时,python脚本正常运行。当没有任何参数时(即仅在没有参数的情况下调用python脚本时),也会运行下面的第二次尝试代码。
因此,当我尝试传递参数并调用脚本时,出现错误。
代码:第一次尝试
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
代码:第二次尝试
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
代码:第三次尝试
这次,我没有直接使用python调用python脚本,而是在 StartInfo.FileName 中调用了 cmd.exe ,并在 StartInfo.Arguments中调用了其他所有内容。
这一次将导致找不到文件错误消息。
从上述命令中,还尝试从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
帮助:感激任何帮助!
答案 0 :(得分:0)
由于似乎只有在传递带有参数的python脚本时才出现问题,所以一种快速的补救方法是在文本文件中添加参数,并在python脚本加载时读取它。.
它有效,但不能解决当前问题。但是,这是在我这里适用的辅助解决方案。希望这对某人有帮助。以下是使用的python命令。我从python脚本中删除了参数解析器,而不是从 -d arg 中读取文件中的参数,如下所示:
# check the list_from configuration
list_conf_path = "list_from.txt"
list_conf = ""
if isfile(list_conf_path):
with open(list_conf_path, 'r') as f:
list_conf = f.readline()
list_conf = list_conf.replace('"', '')
print(list_conf)
# start the main function
if list_conf != "":
init(list_conf)
else:
init("C:\\")
同样,不是精确的解决方案,而是次要的解决方案。