无论如何都要将多个值传递给单个参数

时间:2017-12-15 23:32:21

标签: python pexpect

我有一个像这样定义的函数:

def cmd_success(cmd_session, success_cmd, failure_cmd=None):
    ....
    ....

我在这里调用这个函数:

for command in commands:
success = cmd_success(session, str_prompt, 'Invalid')
if success == False:
    print "Invalid Command"
    sys.exit()

目前,它只是检查“无效”'字符串,但我想检查'错误','不完整'。由于种种原因,我无法更改cmd_success函数中的代码,因此我在函数调用期间寻找了一种方法。

这样的事情:

for command in commands:
    success = cmd_success(session, str_prompt, ['Invalid', 'Error', Incomplete')
    if success == False:
        print "Invalid Command"
        sys.exit()

那不起作用并给我这个:

TypeError: got <type 'tuple'> (['Invalid', 'Error', 'Incomplete' ]) as pattern, must be one of: <type 'basestring'>, pexpect.EOF, pexpect.TIMEOUT

无论如何它可以找到所有三个字符串吗?争论的焦点是&#39; failure_cmd&#39;并且它只期望1个字符串,但我希望所有3个字符串都通过,因此找到其中任何一个,成功设置为false。

由于 戴蒙

1 个答案:

答案 0 :(得分:1)

根据其文档,pexpect采用正则表达式作为其模式参数。正则表达式可能也适用于cmd_success()模式。

试试这个:

success = cmd_success(session, str_prompt, 'Invalid|Error|Incomplete')