将返回值从Python脚本传递到VB脚本

将返回值从Python脚本传递到VB脚本,python,vbscript,Python,Vbscript,我有一个VB脚本(UFT)代码,它触发Python脚本来检查图像是否符合所需的颜色,Python脚本将字符串返回到VB脚本,并带有颜色值。 我能够从VB脚本调用python脚本,python脚本也执行并返回值。我的问题是我无法将返回值保存在任何变量中,它只是空白 下面是我调用python脚本的VB脚本代码 Function Verifycolor(icolor,ipath,rValue) Dim pyr Set pyShell = CreateObject("Wscript.Shell") c

我有一个VB脚本(UFT)代码,它触发Python脚本来检查图像是否符合所需的颜色,Python脚本将字符串返回到VB脚本,并带有颜色值。 我能够从VB脚本调用python脚本,python脚本也执行并返回值。我的问题是我无法将返回值保存在任何变量中,它只是空白

下面是我调用python脚本的VB脚本代码

Function Verifycolor(icolor,ipath,rValue)

Dim pyr
Set pyShell = CreateObject("Wscript.Shell")
color = icolor
Imagepath = ipath
pyColorVerify = "python ""C:\Users\a272099\Desktop\Python\codes\Verifycolor.py""" & " " & color & " " & ImagePath
Set pyOperation = pyShell.Exec(pyColorVerify)
Set pyResult = pyOperation.StdOut
wait(1)
msgbox pyResult.ReadAll


pyr = pyResult.ReadAll

msgbox pyr

'Do 
'pyRet = pyResult.ReadAll
''msgbox pyReturn
'wait(1)
'Loop Until pyReturn <> empty

If pyr = rValue  Then
        Reporter.ReportEvent micPass,"Preconditions are not set to" &color& "color","preconditions are set"
    Else
        Reporter.ReportEvent micFail,"Preconditions are set  to" &color& "color","preconditions are set"
End If

msgbox pyResult.ReadAll

End Function
当python返回值时,问题出现在我的VB脚本中 当我执行Msgbox PyResult.Readall时,我得到了从Python返回的正确消息,要么绿色存在,要么绿色不存在

如果我给任何变量赋值,比如pyr。pyr总是空的,没有存储任何内容

请帮助我解决将pyResult.ReadAll存储到变量的问题,以便我可以在其他条件下使用它


如果需要更多信息,请告诉我。

看起来
ReadAll
方法也会清除
StdOut
中的内容,因此您只能使用一次

在您的示例中,它适用于该行

msgbox pyResult.ReadAll
但是在这个调用之后,您的pyResult是空的。 第二次尝试使用这种方法不再有效,所以在这一行中

pyr = pyResult.ReadAll
它返回一个空字符串

只需删除第一个呼叫

msgbox pyResult.ReadAll
并且只调用一次
ReadAll
,将返回的值存储到如下变量中

pyr = pyResult.ReadAll

从那时起,如果您需要该值,请仅使用
pyr
,不要再调用
ReadAll

谢谢您,Geert。它的工作原理是删除该消息框。我不知道它只能用一次。谢谢你的支持,这节省了我很多时间。
pyr = pyResult.ReadAll