为什么Python pexpect与此处的换行符不匹配
我正在尝试从run.py执行client.py。client.py将提示输入。我已经编写了一个简单的pexpect代码,但是它与提示符不匹配,并且挂起 这是我的密码 client.py run.py 这是另一次使用expect_exact的尝试,它对我没有帮助 run1.py Python和pexpect版本-为什么Python pexpect与此处的换行符不匹配,python,pexpect,Python,Pexpect,我正在尝试从run.py执行client.py。client.py将提示输入。我已经编写了一个简单的pexpect代码,但是它与提示符不匹配,并且挂起 这是我的密码 client.py run.py 这是另一次使用expect_exact的尝试,它对我没有帮助 run1.py Python和pexpect版本- 您可能希望使用expect\u-exact而不是expect,因为后面的方法需要正则表达式,其中[是一个特殊字符。问题在于您的\n字符。如前所述,您正在发送\n,但pexpect将其视为
您可能希望使用
expect\u-exact
而不是expect
,因为后面的方法需要正则表达式,其中[
是一个特殊字符。问题在于您的\n
字符。如前所述,您正在发送\n
,但pexpect将其视为\r\n
,因此您必须告诉run.py
希望\r\n
,而不仅仅是\n
:
import pexpect
child = pexpect.spawn ('python client.py')
child.expect_exact('Please data, default [ /Anything ]:\r\n')
child.sendline ('anonymous')
保持
client.py
原样(不要将\r
添加到原始输入字符串中)。您只需在pexpect中输入任何内容,然后继续您的代码即可
child.pexpect('Anything')
它对我不起作用。我用上面的代码编辑了我的问题。
import pexpect
child = pexpect.spawn ('python client.py')
child.expect_exact('Please data, default [ /Anything ]:\n')
child.sendline ('anonymous')
Python 2.7.2 (default, May 13 2014, 12:53:14)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pexpect
>>> pexpect.__version__
'3.2'
>>>
import pexpect
child = pexpect.spawn ('python client.py')
child.expect_exact('Please data, default [ /Anything ]:\r\n')
child.sendline ('anonymous')
child.pexpect('Anything')