pexpect child.before和child.after是空的

时间:2016-10-15 08:01:45

标签: python pexpect

>>> ssh_stuff
['yes/no', 'Password:', 'password', 'Are you sure you want to continue connecting']
>>> prompt
['$', '#']
>>> child = pexpect.spawn('ssh kumarshubham@localhost')
>>> child.expect(ssh_stuff)
1
>>> child.sendline(getpass.getpass())
Password: 
11
>>> child.expect(prompt)
0
>>> child.sendline('ls -l')
6
>>> child.expect(prompt)
0
>>> print child.before, child.after

可以告诉我为什么我的孩子。之前和之后是空的,它应该返回目录列表。

1 个答案:

答案 0 :(得分:0)

expect方法采用模式或模式列表。这些模式被视为正则表达式。从文档中可能不太清楚,但是如果你查看pexpect的代码,那么你可以看到它就是这种情况。

提示变量以

给出
prompt = ['$', '#']

$是正则表达式中的特殊字符,它将根据python正则表达式文档进行匹配:

  

' $'匹配字符串的结尾或在字符串末尾的换行符之前,并且在MULTILINE模式下也匹配换行符之前。

我们可以看到它是在控制台输出中匹配的那个:

>>> child.expect(prompt)
0

要将$符号解释为文字,必须以反斜杠开头。

prompt = ['\$', '#']